ZOJ3811 - Untrusted Patrol(并查集 或者 bfs dfs)
2014-09-11 09:38
309 查看
ZOJ Problem Set - 3811
Untrusted Patrol
题链:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3811
题目大意是说给你一个图(无向)在其中几个节点上放一个监视器,它会记录你第一次经过它的时间,boss想验证保安是否能按照经过监视器的顺序
遍历所有节点(监视器节点可以经过多次,但只记录一次)
我的方法:
1.用vector数组创建不确定大小的二维数组(edge);
2.对于任一节点i,根据图的边加入所有所有与i相连接的点到edge[i]中;
3.bfs得到答案(count_表示访问过的节点数,count表示访问过的监视点数):第一个监视器节点入队列,逐渐加入其相邻节点,如果相邻节点j不是监
视点且未被访问,直接加入队列,count_+1,标记为已访问(rec[j] = 1)如果j是监视点,但不是下一个被记录的监视点,标记为有路径可访问(有路径
可访问但是顺序上不允许,rec[j] = 2),如果j是下一个被记录的监视点,直接加入队列,count_+1,count+1,标记为已访问(rec[j] = 1),然后将j后
面连续的标记为“2”值的监视点(假设是k个)全部加入,加入队列,count_+k,count+k(此时可以按顺序访问它们);
4.只有在count , count_ 分别和
总监视点数 以及 总节点数相等的时候才输出Yes
童鞋的方法:
童鞋并未用bfs,他用并查集写的,先把所有的非监视点集合出来,然后按照监视点记录的顺序加入监视点以及相邻的边,然后验证相邻两个监视点
是否同有一个父亲节点,有就是可以。这个方法要注意最后一定要判断这个图是不是联通的,因为它对于单个孤立节点是没法判断的!
give you 他的链接:http://hnnwang.github.io/blog/2014/09/08/bing-cha-ji-mo-ban/
以下是bfs的代码:
Untrusted Patrol
题链:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3811
题目大意是说给你一个图(无向)在其中几个节点上放一个监视器,它会记录你第一次经过它的时间,boss想验证保安是否能按照经过监视器的顺序
遍历所有节点(监视器节点可以经过多次,但只记录一次)
我的方法:
1.用vector数组创建不确定大小的二维数组(edge);
2.对于任一节点i,根据图的边加入所有所有与i相连接的点到edge[i]中;
3.bfs得到答案(count_表示访问过的节点数,count表示访问过的监视点数):第一个监视器节点入队列,逐渐加入其相邻节点,如果相邻节点j不是监
视点且未被访问,直接加入队列,count_+1,标记为已访问(rec[j] = 1)如果j是监视点,但不是下一个被记录的监视点,标记为有路径可访问(有路径
可访问但是顺序上不允许,rec[j] = 2),如果j是下一个被记录的监视点,直接加入队列,count_+1,count+1,标记为已访问(rec[j] = 1),然后将j后
面连续的标记为“2”值的监视点(假设是k个)全部加入,加入队列,count_+k,count+k(此时可以按顺序访问它们);
4.只有在count , count_ 分别和
总监视点数 以及 总节点数相等的时候才输出Yes
童鞋的方法:
童鞋并未用bfs,他用并查集写的,先把所有的非监视点集合出来,然后按照监视点记录的顺序加入监视点以及相邻的边,然后验证相邻两个监视点
是否同有一个父亲节点,有就是可以。这个方法要注意最后一定要判断这个图是不是联通的,因为它对于单个孤立节点是没法判断的!
give you 他的链接:http://hnnwang.github.io/blog/2014/09/08/bing-cha-ji-mo-ban/
以下是bfs的代码:
相关文章推荐
- zoj3811 Untrusted Patrol bfs
- ZOJ3811--Untrusted Patrol(DFS)
- ZOJ 3811 Untrusted Patrol 并查集 染色 BFS
- zoj3811 Untrusted Patrol (dfs)
- ZOJ3811:Untrusted Patrol(并查集)
- zoj 3811 Untrusted Patrol(bfs或dfs)
- Hihocoder #1121 二分图一•二分图判定( bfs或者dfs搜索实现 搜索的过程中进行 节点标记 *【模板】)
- ZOJ 3811 Untrusted Patrol 并查集
- HDU 1728 逃离迷宫 单方向BFS 或者DFS加剪枝
- 分别利用并查集,DFS和BFS方法求联通块的数量
- 蹲草丛--dfs或者bfs找最小的连着草丛i
- hdu4751Divide Groups(dfs枚举完全图集合或者bfs染色)
- ZOJ-3811 Untrusted Patrol DFS 2014牡丹江网络赛C题
- ZOJ 3811 Untrusted Patrol 并查集+邻接表,注意所有点都要走过
- 【HDU 4514】【树的直径 dfs或者并查集判断环】【给定一个无向图,图可能是非连通的,如果图中存在环,就输出YES,否则就输出树的直径】
- hdu 1181 (搜索BFS,深搜DFS,并查集)
- 二分图判定(UVA10004)(DFS或者BFS)
- Codeforces Beta Round #94 div 2 C Statues dfs或者bfs
- 2014牡丹江网络zoj3816Generalized Palindromic Number(dfs或者bfs)
- ZOJ3811 Untrusted Patrol (2014年牡丹江赛区网络赛C题)