团体程序设计天梯赛-练习集 - 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;
}
目录
相关文章
团体程序设计天梯赛-练习集L2篇⑨
团体程序设计天梯赛-练习集L2篇⑨
169 0
团体程序设计天梯赛-练习集L2篇⑦
团体程序设计天梯赛-练习集L2篇⑦
80 0
|
Perl
团体程序设计天梯赛-练习集L1篇③
团体程序设计天梯赛-练习集L1篇③
141 0
|
测试技术
团体程序设计天梯赛-练习集L2篇⑥
团体程序设计天梯赛-练习集L2篇⑥
118 0
|
人工智能 BI 知识图谱
2019年 团体程序设计天梯赛——题解集
⭐L1一阶题 (虽然比较基础但是是很重要的一部分,且一些题目有一定难度哦!) ⭐L1-057 PTA使我精神焕发 (5分) 本题题目链接 以上是湖北经济学院同学的大作。本题就请你用汉语拼音输出这句话。 输入格式: 本题没有输入。
205 0
 2019年 团体程序设计天梯赛——题解集
|
机器学习/深度学习
2018年 团体程序设计天梯赛——题解集
⭐L1-051 打折 (5分) 本题题目链接👈👈👈👈👈 去商场淘打折商品时,计算打折以后的价钱是件颇费脑子的事情。例如原价 ¥988,标明打 7 折,则折扣价应该是 ¥988 x 70% = ¥691.60。本题就请你写个程序替客户计算折扣价。 输入格式: 输入在一行中给出商品的原价(不超过1万元的正整数)和折扣(为[1, 9]区间内的整数),其间以空格分隔。 输出格式: 在一行中输出商品的折扣价,保留小数点后 2 位。
553 0
|
小程序 Linux
2020年 团体程序设计天梯赛——题解集(2)
⭐L1一阶题 (虽然比较基础但是是很重要的一部分,且一些题目有一定难度哦!) ⭐L1-065 嫑废话上代码 (5分) 本题题目链接!!!!! Linux 之父 Linus Torvalds 的名言是:“Talk is cheap. Show me the code.”(嫑废话,上代码)。本题就请你直接在屏幕上输出这句话。 输入格式: 本题没有输入。
249 0
|
算法 安全 定位技术
团体程序设计天梯赛(上)
团体程序设计天梯赛
450 0
团体程序设计天梯赛(上)
|
存储 大数据
团体程序设计天梯赛(下)
团体程序设计天梯赛(下)
403 0
团体程序设计天梯赛(下)
|
机器学习/深度学习 程序员 Python
团体程序设计天梯赛-模拟赛(上)
团体程序设计天梯赛-模拟赛
742 0
团体程序设计天梯赛-模拟赛(上)