L3-008. 喊山

一个山头呼喊的声音可以被临近的山头同时听到。题目假设每个山头最多有两个能听到它的临近山头。给定任意一个发出原始信号的山头,本题请你找出这个信号最远能传达到的地方。【何为最远?大致就是BFS的遍历层次吧,可以说是了。】

输入格式:

输入第一行给出3个正整数n、m和k,其中n(<=10000)是总的山头数(于是假设每个山头从1到n编号)。接下来的m行,每行给出2个不超过n的正整数,数字间用空格分开,分别代表可以听到彼此【这里说明是双向边!】的两个山头的编号。这里保证每一对山头只被输入一次,不会有重复的关系输入。最后一行给出k(<=10)个不超过n的正整数,数字间用空格分开,代表需要查询的山头的编号。

输出格式:

依次对于输入中的每个被查询的山头,在一行中输出其发出的呼喊能够连锁传达到的最远的那个山头。注意:被输出的首先必须是被查询的个山头能连锁传到的。若这样的山头不只一个,则输出编号最小的那个。若此山头的呼喊无法传到任何其他山头,则输出0。

输入样例:

7 5 4
1 2
2 3
3 1
4 5
5 6
1 4 5 7【7是一个孤立的点,输出其自身!】

输出样例:

2
6
4
0


AC题解,有详细注释呦:

虽然是level-3的题目,但其实也怪简单!加油!相信自己!
 #include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<vector>
#include<string>
#include<stack>
#define inf 0x3f3f3f3f
#define dinf 0x7fffffff*1.0
using namespace std; //L3-008. 喊山
#define N 10008
#define ll long long
struct node{
int x,step;
node(int x=,int step=):x(x),step(step){}//构造函数
};
vector<int>G[N];//构建邻接矩阵
int vis[N];
int bfs(int st){//st是start的缩写,表示开始搜索的点
memset(vis,,sizeof(vis));//标记数组,以免重复访问
queue<node>Q;
Q.push(node(st,));
vis[st]=;
int maxdeep=;//对st来说,可以达到的最大搜索深度
int ans=inf;
node now; while(Q.size()){//每次从队首获得并删除一个点,然后遍历完他的子节点——没标记过的就再次加入队列中
now=Q.front();
Q.pop();
// printf(" *%d/%d* ",now.x,now.step);
if(now.step>maxdeep){
maxdeep=now.step;
ans=now.x;
}else if(now.step==maxdeep){
ans=min(ans,now.x);
}
for(int i=;i<(int)G[now.x].size();i++){
int v=G[now.x][i];//取出now.x在邻接矩阵中的一个子节点V
if(!vis[v]){
vis[v]=;
Q.push(node(v,now.step+));
}
}
} return (ans==st?:ans);//考虑0的特例
}
int main(){
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
int u,v;
for(int i=;i<=n;i++){
G[i].clear();
}
for(int i=;i<=m;i++){
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
for(int i=;i<=k;i++){
scanf("%d",&u);
printf("%d\n",bfs(u));
} return ;
}

【邻接矩阵+基础BFS】PAT-L3-008. 喊山的更多相关文章

  1. PAT L3-008. 喊山(BFS)C4 初赛30分

    喊山(30 分) 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的. ...

  2. PAT天梯赛练习题——L3-008. 喊山(邻接表+BFS)

    L3-008. 喊山 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂 ...

  3. PAT 天梯杯 L3-008. 喊山 bfs

    L3-008. 喊山 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂 ...

  4. pat 喊山

    L3-008. 喊山 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出" ...

  5. PAT L3-008 喊山

    https://pintia.cn/problem-sets/994805046380707840/problems/994805050709229568 喊山,是人双手围在嘴边成喇叭状,对着远方高山 ...

  6. PAT L3-008 喊山(广搜)

    喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的.原来它是彝族先民用 ...

  7. L3-008 喊山 (30 分)

    喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的.原来它是彝族先民用 ...

  8. PTA 练习 7-24 喊山 (30 分)

    7-24 喊山 (30 分) 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出"喂-喂喂-喂喂喂--"的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的& ...

  9. PTA喊山

    喊山 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的.原来它是彝族 ...

随机推荐

  1. 清除 sql server 记住密码

    引用:https://www.cnblogs.com/zengbin/p/4307013.html SQL Server 2005 Management Studio %AppData%\Micros ...

  2. .net core中关于System.Text.Json的使用

    在.Net Framework的时候序列化经常使用Newtonsoft.Json插件来使用,而在.Net Core中自带了System.Text.Json,号称性能更好,今天抽空就来捣鼓一下. 使用起 ...

  3. Meerkat软件

    一.准备工作 meerkat 0.189版本和以前的版本相比,支持bwa mem 输出的bam文件,还支持全外显子数据count SV. meerkat原理 1.1 需要准备的软件 unix/Linu ...

  4. fastai 2019 part1 数据集分享

    链接:https://pan.baidu.com/s/1UuQ8gJ2qXLvPK2rdIqWCMQ 提取码:ghn9

  5. 02 HTML

    1. HTML概念: HTML是最基础的网页开发语言 * Hyper Text Markup Language 超文本标记语言 * 超文本: * 超文本是用超链接的方法,将各种不同空间的文字信息组织在 ...

  6. [Visual Studio] - Unable to launch the IIS Express Web server 问题之解决

    背景 Visual Studio 2015 在 Debug 模式下调试失败. 错误 解决 删除解决方案下 .vs/config 文件夹,重新运行解决方案可进行调试. 参考资料 https://stac ...

  7. u盘传输文件时提示过大

    (无需格式化U盘) 1.拷贝大文件时提示目标文件系统过大,无法复制 2.查U盘,发现剩余空间足够: 3.分析原因,是由于U盘的格式问题导致的,当期的磁盘格式是FAT32类型的,无拷贝过大的文件: 4. ...

  8. ubuntu mysql5.7设置Open Files Limit

    目的:解决Too many open files异常 方式:设置Open Files Limit 环境:(MySQL)Server version: 5.7.27-0ubuntu0.16.04.1 ( ...

  9. C之typedef应用

    1.0关于typedef关键字的基础: https://www.cnblogs.com/anSn/p/8783347.html 1.1 typedef 修饰“函数类型” 的调用方法: 1)我们写一段普 ...

  10. Python15之字符串的格式语句与操作符

    一.字符串的format()函数 字符串1.format(赋值)                         字符串中必须表明需要格式化的位置 format()函数使用时,花括号中的值表明字符串中 ...