7-24 喊山 (30 分)

喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价值,便把它作为一种交流工具世代传袭使用。(图文摘自:http://news.xrxxw.com/newsshow-8018.html)

一个山头呼喊的声音可以被临近的山头同时听到。题目假设每个山头最多有两个能听到它的临近山头。给定任意一个发出原始信号的山头,本题请你找出这个信号最远能传达到的地方。

输入格式:

输入第一行给出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

输出样例:

2

6

4

0

解题思路:

链式前向星建图之后对于每个询问直接BFS搜

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 7;
#define inf 0x3f3f3f3f
int ans;
struct Edge
{
int u, v, net;
Edge(int _u = 0, int _v = 0, int _net = 0)
{
u = _u, v = _v, net = _net;
}
} e[MAXN << 1];
int cnt = -1;
int head[MAXN];
int vis[MAXN];
void add(int u, int v)
{
e[++cnt] = Edge(u, v, head[u]);
head[u] = cnt;
}
int maxx, maxlen;
struct node
{
int num, len;
node(int _num = 0, int _len = 0)
{
num = _num;
len = _len;
}
};
void bfs(int x)
{
memset(vis, 0, sizeof(vis));
queue<node> q;
q.push(node(x, 0));
vis[x] = 1;
while (!q.empty())
{
node w = q.front();
q.pop();
for (int i = head[w.num]; ~i; i = e[i].net)
{
int to = e[i].v;
if (!vis[to])
{
vis[to] = 1;
node l = node(to, w.len + 1);
if (l.len > maxlen)
{
maxx = l.num;
maxlen = l.len;
}
else if (l.len == maxlen)
maxx = min(maxx, l.num);
q.push(l);
}
}
}
}
int main()
{
memset(head, -1, sizeof(head));
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
for (int i = 0; i < m; i++)
{
int u, v;
scanf("%d%d", &u, &v);
add(u, v);
add(v, u);
}
while (k--)
{
memset(vis, 0, sizeof(vis));
int x;
scanf("%d", &x);
maxlen = 0, maxx = -1;
bfs(x);
if (maxx == -1)
printf("0\n");
else
printf("%d\n", maxx);
}
return 0;
}

PTA 练习 7-24 喊山 (30 分)的更多相关文章

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

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

  2. PTA 7-2 哈夫曼编码 (30分)

    PTA 7-2 哈夫曼编码 (30分) 给定一段文字,如果我们统计出字母出现的频率,是可以根据哈夫曼算法给出一套编码,使得用此编码压缩原文可以得到最短的编码总长.然而哈夫曼编码并不是唯一的.例如对字符 ...

  3. PTA 11-散列4 Hard Version (30分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/680 5-18 Hashing - Hard Version   (30分) Given ...

  4. PTA 04-树6 Complete Binary Search Tree (30分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/669 5-7 Complete Binary Search Tree   (30分) A ...

  5. PTA 逆散列问题 (30 分)(贪心)

    题目链接:https://pintia.cn/problem-sets/1107178288721649664/problems/1107178432099737614 题目大意: 给定长度为 N 的 ...

  6. CCCC 喊山

    2016年天梯赛模拟&初赛题集(nwu) 编程题30小题,共计580分 580分 编程题 5-14 喊山   (30分) 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂…… ...

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

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

  8. L3-008 喊山 (30 分)

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

  9. PTA 7-1 是否完全二叉搜索树 (30分)

    PTA 7-1 是否完全二叉搜索树 (30分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. ...

随机推荐

  1. 对EntityViewInfo的理解

    1,EntityViewInfo常常用作bos中接口参数,来做查询用,其中包含了FilterInfo(过滤).Selector(指定属性)以及Sorter(排序)   SelectorItemColl ...

  2. 解决Jsp与Java后台之间url传值中文乱码问题

    JSP页面中,由JavaScript拼接url时,对于中文名称变量应该加上encodeURIComponent方法,对中文进行十六进制编码. 例如: url = /com/xxx/B.jsp?chin ...

  3. Ssh_key免秘钥登录

    一,环境准备 1.1 操作系统 [root@manager ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@manager ~ ...

  4. ES6学习----let、const、解构赋值、新增字符串、模板字符串、Symbol类型、Proxy、Set

    这篇es6的学习笔记来自于表哥 表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 ES6就是JS6,JS的第 ...

  5. 从桌面到 Web - 二十几天学 ASP.NETCore 1

    这么多年一直从事桌面开发,一直没有时间好好学学  web 开发.感觉自己就像从石器时代走来的古代类人猿.由于工作的调整,现在终于有时间学习一下 Web 开发.出于对技术和框架的熟悉和继承,决定还是学习 ...

  6. teamviewer早期版本下载链接

    https://www.teamviewer.cn/cn/download/previous-versions/

  7. LibreOJ 6278. 数列分块入门 2 题解

    题目链接:https://loj.ac/problem/6278 题目描述 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,询问区间内小于某个值 \(x\) 的元素个数. ...

  8. 「模拟赛 2018-11-02」T3 老大 解题报告

    老大 题目描述 因为 OB 今年拿下 4 块金牌,学校赞助扩建劳模办公室为劳模办公室群,为了体现 OI 的特色,办公室群被设计成了树形(n 个点 n − 1 条边的无向连通图),由于新建的办公室太大以 ...

  9. makefile个人理解

    makefile makefile抽象层面的理解 学习某一样东西之前一定要明确学习的目的,即学习了这项工具能解决一些什么问题,其优势是什么? makefile的优势就是能够动态根据文件的新旧来决定是否 ...

  10. tomcat 介绍及环境搭建

    一.tomcat介绍 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型 系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选. ...