题目链接

https://www.patest.cn/contests/gplt/L3-008

思路

因为 每个山头 最多有两个 能听到它的 临近山头

那么 我们就可以 给每个 山头 都 分配 最多两个子儿子

然后 再从儿子 往下找

一层一层往下找 如果找的元素 之前已经出现过 这个 就不压入 队列

直到最后 队列为空 输出当层 编号最小的那个

AC代码

#include <cstdio>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <map>
#include <stack>
#include <set>
#include <numeric>
#include <sstream>
#include <iomanip>
#include <limits> #define CLR(a) memset(a, 0, sizeof(a)) using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair<string, int> psi;
typedef pair<string, string> pss; const double PI = 3.14159265358979323846264338327;
const double E = exp(1);
const double eps = 1e-3; const int INF = 0x3f3f3f3f;
const int maxn = 1e4 + 5;
const int MOD = 1e9 + 7; int ans; queue <int> opt; map <int, int> q, vis; struct Node
{
int l, r;
}w[maxn]; void bfs(int cur)
{
int len = opt.size();
int Min = INF;
while (len--)
{
int num = opt.front();
opt.pop();
if (num < Min)
Min = num;
if (vis[w[num].l] == 0)
{
opt.push(w[num].l);
vis[w[num].l] = 1;
}
if (vis[w[num].r] == 0)
{
opt.push(w[num].r);
vis[w[num].r] = 1;
}
}
if (opt.empty())
{
ans = Min;
return;
}
else
bfs(cur + 1);
} int main()
{
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
int a, b;
for (int i = 0; i < m; i++)
{
scanf("%d%d", &a, &b);
q[a] = 1;
q[b] = 1;
if (w[a].l)
w[a].r = b;
else
w[a].l = b;
if (w[b].l)
w[b].r = a;
else
w[b].l = a;
}
for (int i = 0; i < k; i++)
{
scanf("%d", &a);
if (q[a] == 0)
printf("0\n");
else
{
vis.clear();
vis[0] = 1;
while (!opt.empty())
opt.pop();
if (w[a].l != 0)
opt.push(w[a].l);
if (w[a].r != 0)
opt.push(w[a].r);
vis[w[a].l] = 1;
vis[w[a].r] = 1;
vis[a] = 1;
bfs(1);
printf("%d\n", ans);
}
}
}

PAT 天梯赛 L3-008. 喊山 【BFS】的更多相关文章

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

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

  2. 天梯赛练习 L3-008 喊山 (30分) bfs搜索

    题目分析: 本题是一题比较简单的bfs搜索题,首先由于数据给的比较多不能直接开二维数组存放,而是用了vector的动态的二维数组的形式存放,对于每个出发点,我们bfs向四周搜索,标记搜索过的点,遇到搜 ...

  3. PAT 天梯赛 L2-013. 红色警报 【BFS】

    题目链接 https://www.patest.cn/contests/gplt/L2-013 思路 可以通过图的连通块个数来判断 假如 一座城市的失去 改变了其他城市之间的连通性 那么 这座城市本来 ...

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

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

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

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

  6. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  7. PAT天梯赛 L1-049 天梯赛座位分配

    题目链接:点击打开链接 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] ...

  8. PAT天梯赛L3-007 天梯地图

    题目链接:点击打开链接 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至 ...

  9. PAT天梯赛练习题——L3-007. 天梯地图(多边权SPFA)

    L3-007. 天梯地图 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校 ...

随机推荐

  1. tomcat部署不成功 Deployment failure on Tomcat 6.x. Could not copy all resources to

    解决办法: tomcat服务并没有启动.上网搜索之后发现和大家犯的是一个毛病,原来工程中我引了一个包,后来这个包被我给删除了,但是因为已经发布过这个工程了,所以classpath中就有这个包名了,这样 ...

  2. poj 3648 线段树成段更新

    线段树成段更新需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候.延迟标记的意思是:这个区间的左右儿子都需要被更新,但是当 ...

  3. ElasticSearch和Hive做整合

    1.上传elasticsearh-hadoop的jar包到server1-hadoop-namenode-01上 在server1-hadoop-namenode-01上执行: cp  /home/d ...

  4. .NET创建宿主设计器--DesignHost、DesignSurface.

    一个窗口在运行时,是这样的: 但是,在设计时,却远比这复杂的多,它需要一个设计器对象:它仅存在于设计时,并连接到运行时存在的对象.   宿主容器 我们可以看到每个窗体和按钮均有与之相关的设计器.这两个 ...

  5. 升级Jekyll 3.0

    每一次的升级都得又一次折腾一次,jekyll也不例外 从jekyll 2.5.2 升级为jekyll 3.0.1 错误一: jekyll 3.0.1 | Error: Permission denie ...

  6. vs:如何添加.dll文件

    Newtonsoft.Json.dll  一个第三方的json序列化和反序列化dll,转换成json供页面使用,页面json数据转换成对象,供.net使用 Mysql.Data.dll  mysql数 ...

  7. 跨域用ajax处理并返回处理状态

    <script type="text/javascript">        $(function () {            $("#submitBtu ...

  8. 【ORACLE】ORA-27102: out of memory报错的处理

    ************************************************************************ ****原文:blog.csdn.net/clark_ ...

  9. wpf SplitButton

     SplitButton该控件除了本身Button 的功能外,还具有下拉菜单的功能,能够在按键右側加入下拉菜单控件: <SplitButton Content="..." ...

  10. myql5.7.7优化配置參数

    # Other default tuning values # MySQL Server Instance Configuration File # ------------------------- ...