团体程序设计天梯赛-练习集 - L3-008 喊山(30 分)

简介: 团体程序设计天梯赛-练习集 - L3-008 喊山(30 分)

题目链接:点击打开链接

题目大意:略。

解题思路:略。

AC 代码1(BFS版)

#include<bits/stdc++.h>#include<cmath>#define mem(a,b) memset(a,b,sizeof a)#define ssclr(ss) ss.clear(), ss.str("")#define INF 0x3f3f3f3f#define MOD 1000000007usingnamespacestd;
typedeflonglongll;
intn,m,k;
intvis[10009], lvl[10009], book[10009];
vector<int>vec[10009];
intbfs(ints)
{
intma=0, idx=-1;
mem(lvl,0), mem(book,0);
queue<int>q;
q.push(s);
lvl[s]=0;
book[s]=1;
inttp,v;
while(!q.empty())
    {
tp=q.front(), q.pop();
for(inti=0;i<vec[tp].size();i++)
        {
v=vec[tp][i];
if(!book[v])
            {
book[v]=1;
lvl[v]=lvl[tp]+1;
q.push(v);
if(lvl[v]>ma) ma=lvl[v], idx=v;
elseif(lvl[v]==ma&&idx>v) idx=v;
            }
        }
    }
returnidx;
}
intmain()
{
intu,v;
scanf("%d%d%d",&n,&m,&k);
for(inti=0;i<m;i++)
    {
scanf("%d%d",&u,&v);
vec[u].push_back(v);
vec[v].push_back(u);
vis[u]=vis[v]=1;
    }
while(k--)
    {
scanf("%d",&u);
if(!vis[u]) puts("0");
elseprintf("%d\n",bfs(u));
    }
return0;
}


TLE 代码2(Dijkstra版)

#include<bits/stdc++.h>#include<cmath>#define mem(a,b) memset(a,b,sizeof a)#define ssclr(ss) ss.clear(), ss.str("")#define INF 0x3f3f3f3f#define MOD 1000000007usingnamespacestd;
typedeflonglongll;
constintmaxn=1e4+10;
intn,m,k;
intdis[maxn], vis[maxn], book[maxn];
unordered_map<int,int>ump;
intfhash(inta,intb)
{
returna*10000+b;
}
intdijkstra(ints)
{
intw, ma=-1, idx=-1;
dis[s]=0;
while(1)
    {
intmi=INF; s=-1;
for(inti=1;i<=n;i++)
if(!vis[i] &&mi>dis[i]) mi=dis[i], s=i;
if(s==-1) returnidx;
vis[s]=1;
for(inti=1;i<=n;i++)
        {
w=ump[fhash(s,i)]==1?1:INF;
if(!vis[i] &&mi+w<dis[i])
            {
dis[i]=mi+w;
if(ma<dis[i]) ma=dis[i], idx=i;
elseif(ma==dis[i] &&i<idx) idx=i;
            }
        }
    }
}
intmain()
{
intu,v,w;
scanf("%d%d%d",&n,&m,&k);
for(inti=0;i<m;i++)
    {
scanf("%d%d",&u,&v);
ump[fhash(u,v)]=ump[fhash(v,u)]=1;
book[u]=book[v]=1;
    }
while(k--)
    {
scanf("%d",&u);
if(!book[u]) puts("0");
else        {
mem(dis,INF), mem(vis,0);
intidx=dijkstra(u);
printf("%d\n",idx);
        }
    }
return0;
}
目录
相关文章
|
算法 Java 程序员
基于Java的连连看游戏设计与实现
基于Java的连连看游戏设计与实现
570 0
|
机器人 Java 编译器
2024年睿抗机器人开发者大赛(RAICOM)CAIP-编程技能赛-本科组国赛
该文章是关于2024年睿抗机器人开发者大赛(RAICOM)CAIP-编程技能赛的介绍。
|
JavaScript 前端开发
在线考试+自动组卷系统
在线考试+自动组卷系统
506 1
|
JavaScript 前端开发
vue-day03 v-on事件处理,表单输入绑定
文章介绍了Vue.js中事件处理和表单输入绑定的使用。包括v-on指令监听事件、事件处理方法、内联处理器、访问原生DOM事件、事件修饰符、按键修饰符、系统修饰符、exact修饰符和鼠标按钮修饰符。同时,讲解了如何使用v-model实现单行文本、多行文本、复选框和单选按钮的双向数据绑定,并提供了修饰符的使用示例。这些特性使得Vue.js在处理表单输入和事件时更加灵活和方便。
vue-day03 v-on事件处理,表单输入绑定
|
机器学习/深度学习 存储 数据采集
人工智能数据结构和算法
人工智能数据结构和算法
628 3
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】python之人工智能应用篇——文本生成技术
文本生成是指使用自然语言处理技术,基于给定的上下文或主题自动生成人类可读的文本。这种技术可以应用于各种领域,如自动写作、聊天机器人、新闻生成、广告文案创作等。
725 8
|
Linux Go API
MemoryModule内存反射DLL加载探索
MemoryModule内存反射DLL加载探索
|
监控 安全 Unix
在Linux中,如何理解安全审计工具?如Lynis和OSSEC。
在Linux中,如何理解安全审计工具?如Lynis和OSSEC。
|
数据采集 机器学习/深度学习 API
爬虫过程中如何处理验证码?
【2月更文挑战第22天】【2月更文挑战第69篇】 爬虫过程中如何处理验证码?
989 1
|
缓存 Python Shell