ZOJ 3811 Untrusted Patrol 并查集+邻接表,注意所有点都要走过

Untrusted Patrol


Time Limit: 3 Seconds      Memory Limit: 65536 KB



Edward is a rich man. He owns a large factory for health drink production. As a matter of course, there is a large warehouse in the factory.

To ensure the safety of drinks, Edward hired a security man to patrol the warehouse. The warehouse has N piles of drinks and M passageways connected them (warehouse
is not big enough). When the evening comes, the security man will start to patrol the warehouse following a path to check all piles of drinks.

Unfortunately, Edward is a suspicious man, so he sets sensors on K piles of the drinks. When the security man comes to check the drinks, the sensor will record a message. Because
of the memory limit, the sensors can only record for the first time of the security man‘s visit.

After a peaceful evening, Edward gathered all messages ordered by recording time. He wants to know whether is possible that the security man has checked all piles of
drinks. Can you help him?

The security man may start to patrol at any piles of drinks. It is guaranteed that the sensors work properly. However, Edward thinks the security man may not works as expected. For example,
he may digs through walls, climb over piles, use some black magic to teleport to anywhere and so on.

Input

There are multiple test cases. The first line of input is an integer T indicates the number of test cases. For each test case:

The first line contains three integers N (1 <= N <= 100000), M (1 <= M <= 200000) and K (1 <= K <= N).

The next line contains K distinct integers indicating the indexes of piles (1-based) that have sensors installed. The following M lines, each line contains two integers Aiand Bi (1
<= AiBi <= N) which indicates a bidirectional passageway connects piles Ai and Bi.

Then, there is an integer L (1 <= L <= K) indicating the number of messages gathered from all sensors. The next line contains L distinct integers.
These are the indexes of piles where the messages came from (each is among the K integers above), ordered by recording time.

Output

For each test case, output "Yes" if the security man worked normally and has checked all piles of drinks, or "No" if not.

Sample Input

2
5 5 3
1 2 4
1 2
2 3
3 1
1 4
4 5
3
4 2 1
5 5 3
1 2 4
1 2
2 3
3 1
1 4
4 5
3
4 1 2

Sample Output

No
Yes
题意
n个点,m条边,k个点有报警器,每个报警器经过后报警一次就不能再使用。
L次报警,接下来L个数字是一次次的报警顺序
保安每经过一个报警器,报警器就报一次警;
判断保安在这种报警顺序下,有没有可能已经把所有的点都走过了一遍。可能yes 不可能no;

思路:
先把每个报警器用vis标记起来。vis=1代表是报警器
先把所有没警报器的用并查集放入图中,再把和每个报警器相连的存入edge。 如题:把3存入1报警器 edge[1].push_back(3);
然后每查询一个报警器,都把这个报警器的vis改成1,视为普通点,因为报警器只能用一次;
再把与他相连的点,且那个相连的点不是报警器,就放入图中。再检测其能否到达第一个点;
如果每个报警器都能经过的话。再逐一点判断是否和点1是同一个祖先,从而得到这个图是否全联通,也就是 是否 每个点保安都能走过,如果这点再符合,那么就是yes了。


				
时间: 2024-07-30 13:36:56

ZOJ 3811 Untrusted Patrol 并查集+邻接表,注意所有点都要走过的相关文章

zoj 3811 Untrusted Patrol(bfs或dfs)

Untrusted Patrol Time Limit: 3 Seconds      Memory Limit: 65536 KB Edward is a rich man. He owns a large factory for health drink production. As a matter of course, there is a large warehouse in the factory. To ensure the safety of drinks, Edward hir

ZOJ 3811 Untrusted Patrol【并查集】

题目大意:给一个无向图,有些点有装监视器记录第一次到达该点的位置,问是否存在一条路径使得监视器以给定的顺序响起,并且经过所有点 思路:牡丹江网络赛的题,当时想了种并查集的做法,通神写完程序WA了几发,此时JYB用BFS秒了,索性最后还是调出来了,今天自己写了下,感觉唯一的坑点就是需要遍历完所有的点 //zoj3811 #include <stdio.h> #include <string.h> #include <algorithm> #include <queu

ZOJ 3811 Untrusted Patrol bfs+并查集

题目链接:点击打开链接 题意: 给定n个点m条边的无向图,k个触发器. 下面k个数表示触发器安装在哪几个点. 下面m行给出边 最后有l个信号, 给出信号发出的触发器的顺序. 每个触发器只会发出一次信号,且一个点只有一个触发器. 有一个人在遍历图. 每经过一个点,那个点的触发器就会发出信号,问是否存在一种走法使得这个人遍历了所有点且触发器发出的信号顺序和给出的一样. 思路: 先把无触发器的点放到图里. 然后根据触发器的信号顺序把点依次加入图中,加入时只添加(与无触发器点相连的边) 然后判断这个点能

ZOJ 3811 Untrusted Patrol dfs

Untrusted Patrol Time Limit: 3 Seconds      Memory Limit: 65536 KB Edward is a rich man. He owns a large factory for health drink production. As a matter of course, there is a large warehouse in the factory. To ensure the safety of drinks, Edward hir

ZOJ 3811 Untrusted Patrol The 2014 ACM-ICPC Asia Mudanjiang Regional First Round

Description Edward is a rich man. He owns a large factory for health drink production. As a matter of course, there is a large warehouse in the factory. To ensure the safety of drinks, Edward hired a security man to patrol the warehouse. The warehous

ZOJ 3811 zoj 3811 Untrusted Patrol牡丹江网络赛C题

去年的比赛题目,今年才搞懂AC了===|| 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <cctype> 5 #include <cmath> 6 #include <algorithm> 7 #include <vector> 8 #include <queue> 9 #include <stack&g

ZOJ 3811 Untrusted Patrol

题意: 一幅图某些点有监视器  监视器只记录第一次路过的时间  问  给出路线序列  是否存在满足序列的情况下遍历整幅图的点 思路: 不要想割点  割点无法处理在一个双连通分量内的多个监视器  这题就是贪心+搜索 贪心就是尽量多的使用不违背序列的点  那么我们先把序列里的第一个点和不存在监视器的点加入图  并将他们连边  对于其他的序列中的点  如果这个点存在与第一个点所形成的连通块连接的边  那么就加入这个点  否则没有答案 这里的加入点其实就是一个染色的过程  所以用搜索来搞一下 代码: #

zoj 3811 Untrusted Patrol DFS SET

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5343 当时是一个学弟过的,真心没想出来,回想起来其实可能有点后悔做ACM了,确实智商不够...... 11去牡丹江比赛,如果悲剧,ACM生涯就彻底悲剧了,尽量出结果......啥不说,专心刷题 此题还是参考了答案,,, 题目要求:按照次序访问某些点,如果能满足而且能遍历全图,输出yes否则no 学到: 1.是不是能按照规定次序,那么就这么看,按照规定次序,DFS第一个点,过程

zoj 3818 Untrusted Patrol(dsf+并査集+邻接表)

ZOJ Problem Set - 3811 Untrusted Patrol Time Limit: 3 Seconds      Memory Limit: 65536 KB Edward is a rich man. He owns a large factory for health drink production. As a matter of course, there is a large warehouse in the factory. To ensure the safet