题目链接

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. JS: document.getElementBy(), setInerval()

    ylbtech-JavaScript-DOM document.getElementBy(),setInerval() 1.A,document.getElementBy()返回顶部 document ...

  2. 清空catalina.out报错Permission denied

    今天在清空catalina.out的时候报错 [yangkun@sg logs]$ sudo echo '' > catalina.out -bash: catalina.out: Permis ...

  3. 基于Wiremock创建Mock Service平台

    转载:http://blog.csdn.net/liuchunming033/article/details/52399397 1.Wiremock工具介绍 一般开发项目都会分模块进行,比如都会把前端 ...

  4. HDU 3591 The trouble of Xiaoqian(多重背包+全然背包)

    HDU 3591 The trouble of Xiaoqian(多重背包+全然背包) pid=3591">http://acm.hdu.edu.cn/showproblem.php? ...

  5. mbr 备份

    MBR共512字节 (1) 第1-446字节:调用操作系统的机器码. (2) 第447-510字节:分区表(Partition table). (3) 第511-512字节:主引导记录签名(0x55和 ...

  6. Git相关命令教程

    一.在GitHub上创建新项目 (1)在GitHub首页 “New repository”,创建新版本库“test” (2)在本地使用GitBash,将repository clone到本地 git ...

  7. U盘启动盘恢复为普通盘

    U盘启动盘恢复为普通盘 此操作必须借助软件完成. 所用软件:diskgenius 下载地址: https://pan.baidu.com/s/1geDkK7L 密码: 8888   先将u盘中文件拷贝 ...

  8. vue Object.freeze() 优化

    参考自:https://segmentfault.com/a/1190000006191558 Object.freeze()是ES5新增的特性,可以冻结一个对象,防止对象被修改. vue 1.0.1 ...

  9. 【BIEE】BIEE报表根据维度表展示事实表不存在的维度

    事实表数据 维度表数据 现在报表展示如下: 这样展示报表让人感觉数据缺失了,需要显示成如下样子,感觉会比较舒服一点 那么,如何实现上面的完美操作呢? 实现步骤 分析编辑页面→表视图属性→包含仅具有空行 ...

  10. leetcode_Multiply Strings

    描写叙述: Given two numbers represented as strings, return multiplication of the numbers as a string. No ...