原题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1356

  题目需要我们判断给定图在某一步是否会有可能出现在所有节点。首先,我们不妨假设给定图是一条单链,那么无论何时,都是“NO”的情况,因为某一时刻总是奇点或偶点(因为点是同步的,奇点相邻总是偶点,偶点相邻总是奇点)。同理,假设给定图示一个偶圈,同样得出是“NO”的情况;最终,我们得出得出只有是寄圈的情况下才满足“YES”的情况。

  所以我们的任务就是判断寄圈,这里我用的是染色法,直接对图进行深搜同时标记颜色,应该是最通用的求寄圈的方法了。

  1. #include <vector>
  2. #include <list>
  3. #include <map>
  4. #include <set>
  5. #include <queue>
  6. #include <deque>
  7. #include <stack>
  8. #include <bitset>
  9. #include <algorithm>
  10. #include <functional>
  11. #include <numeric>
  12. #include <utility>
  13. #include <sstream>
  14. #include <iostream>
  15. #include <iomanip>
  16. #include <cstdio>
  17. #include <cmath>
  18. #include <cstdlib>
  19. #include <cstring>
  20. #include <ctime>
  21. #include <queue>
  22. #include <cassert>
  23. using namespace std;
  24. //#pragma comment(linker, "/STACK:102400000,102400000")
  25. #define pii pair<int,int>
  26. #define clr(a) memset((a),0,sizeof (a))
  27. #define rep(i,a,b) for(int i=(a);i<=(int)(b);i++)
  28. #define per(i,a,b) for(int i=(a);i>=(int)(b);i--)
  29. #define inf (0x3f3f3f3f)
  30. #define eps 1e-6
  31. #define N 100005
  32. #define M 4000005
  33. #define MODN 1000000007
  34. #define RI(x) scanf("%d", &x)
  35. #define RII(x,y) scanf("%d%d", &x, &y)
  36. #define RIII(x,y,z) scanf("%d%d%d", &x, &y, &z)
  37. #define debug puts("reach here");
  38. typedef long long LL;
  39.  
  40. int n, m, s;
  41. int a, b;
  42. int ne;
  43. int head[N];
  44. int color[N];
  45.  
  46. struct node
  47. {
  48. int v;
  49. int next;
  50. }E[M];
  51.  
  52. void add_edge(int u, int v)
  53. {
  54. E[ne].v = v;
  55. E[ne].next = head[u];
  56. head[u] = ne++;
  57. }
  58.  
  59. void init()
  60. {
  61. memset(head, -, sizeof head);
  62. memset(color, , sizeof color);
  63. ne = ;
  64. }
  65.  
  66. bool dfs(int u)
  67. {
  68. for(int i = head[u]; i != -; i = E[i].next)
  69. {
  70. int v = E[i].v;
  71. if(color[v] == )
  72. {
  73. color[v] = color[u] % + ;
  74. if(dfs(v))
  75. return true;
  76. }
  77. else
  78. {
  79. if(((color[u] + color[v]) % ) == )
  80. return true;
  81. }
  82. }
  83. return false;
  84. }
  85.  
  86. int main()
  87. {
  88. int t;
  89. RI(t);
  90. rep(cas,,t)
  91. {
  92. RIII(n, m, s);
  93. init();
  94. rep(i,,m-)
  95. {
  96. RII(a, b);
  97. add_edge(a, b);
  98. add_edge(b, a);
  99. }
  100. color[s] = ;
  101. printf("Case %d: ", cas);
  102. if(dfs(s)) puts("YES");
  103. else puts("NO");
  104.  
  105. }
  106. return ;
  107. }

CSU 1356 Catch的更多相关文章

  1. csu 1356 Catch bfs(vector)

    1356: Catch Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 96  Solved: 40[Submit][Status][Web Board] ...

  2. CSU - 1356 Catch(dfs染色两种写法,和hdu4751比较)

    Description A thief is running away! We can consider the city to N–. The tricky thief starts his esc ...

  3. IOS开发之--异常处理--使用try 和 catch 来捕获错误。

    一个搞java的老板问我会不会try catch  我说不会 学这么久也没听周围朋友用这个 因为苹果控制台本来就可以打印异常 特此研究一下. 1.try catch:  是捕获异常代码段   特点:对 ...

  4. iOS try catch

    最近看一些第三方的代码有@try,一副看不懂的样子,真心没用过,于是查了些资料收集在这里,以后遇到就不会再蒙比了.其实这东西确实不怎么用,下文有解释.Objective-C 异常机制 :-- 作用 : ...

  5. CSU - 2031 Barareh on Fire (两层bfs)

    传送门: http://acm.csu.edu.cn/csuoj/problemset/problem?pid=2031 Description The Barareh village is on f ...

  6. catch socket error

    whois_handler.dart import 'dart:io'; import 'package:async/async.dart'; import 'dart:convert'; class ...

  7. SQLServer如何添加try catch

    在.net中我们经常用到try catch.不过在sqlserver中我们也可以使用try catch捕捉错误,在这里把语法记录下来和大家分享一下, --构建存储过程CREATE PROCEDURE ...

  8. try...catch..finally

    try..catch..finally try{ 代码块1 }catch(Exception e){ 代码块2 }finally{ 代码块3 } catch是抓取代码块1中的异常 代码块2是出异常后的 ...

  9. C++异常处理:try,catch,throw,finally的用法

    写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使 ...

随机推荐

  1. linux top命令查看系统资源

    参考材料: http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html

  2. Amphetamine的cf日记

    之前挂上的 今天填坑 2018.2.14 #462 A 给两个集合,B分别可以从一个集合中选一个数,B想乘积最大,A想最小,A可以删除一个第一个集合中的元素,问最小能达到多少. 这题..水死啦.我居然 ...

  3. [JLOI2014] 松鼠的新家 (lca/树上差分)

    [JLOI2014]松鼠的新家 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在 ...

  4. 把一个文件中所有文件名或者文件路径读取到一个txt文件,然后在matlab中读取

    链接: http://blog.csdn.net/dreamgchuan/article/details/51113295 dir /on/b/s  这个读取的是这样的格式:

  5. 009.C++ const使用

    1.引例 class complex { public: complex(, ) : re (r), im (i) {} complex& operator += (const complex ...

  6. 修改ranger ui的admin用户登录密码踩坑小记

    修改的ranger ui的admin用户登录密码时,需要在ranger的配置里把admin_password改成一样的,否则hdfs的namenode在使用admin时启动不起来,异常如下: Trac ...

  7. python基础之列表、字典、元祖等 (二)

    一.作用域 if 1==1: name = 'weibinf' print name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 result = 值1 ...

  8. windows中apache+tomcat整合,使php和java项目能够独立运行

    一.下载和安装 1.安装php  网上有安装教程,不再赘述 2.安装apache 比如安装目录为e:\apache;  项目根目录为e:\www;   网上有安装教程,不再赘述 3.安装jdk  不再 ...

  9. powerdesigner中把表的描述复制到Name

    '****************************************************************************** '* File: comment2nam ...

  10. 使用Eclipse进行SWT编程

    使用Eclipse进行SWT编程 1. 为什么要使用SWT? SWT是IBM开发一套跨平台的GUI开发框架.为什么IBM要创建另一种GUI呢?为什么他们不使用现有的JavaGUI框架呢?要回答这些问题 ...