fork download
  1. #include <vector>
  2. #include <iostream>
  3. #include <cmath>
  4. #include <cstdlib>
  5. #include <string>
  6. #include <algorithm>
  7. #include <map>
  8. #include <queue>
  9. #include <stack>
  10. #include <set>
  11. #include <sstream>
  12. #include <bitset>
  13. #include <cstring>
  14.  
  15. using namespace std;
  16.  
  17.  
  18. // Typedef
  19. typedef long long ll;
  20. typedef int in;
  21. typedef long long int lli;
  22. typedef signed long int sli;
  23. typedef unsigned long int uli; //0 to 4,294,967,295
  24. typedef unsigned long long int ulli; //0 to 18,446,744,073,709,551,615
  25.  
  26.  
  27. //scan ulli
  28. #define sc(a) scanf("%llu",&a);
  29.  
  30. //scan uli
  31. #define sc11(a) scanf("%lu",&a);
  32.  
  33. //scan lli
  34. #define sc2(a) scanf("%lld",&a)
  35. #define sc2_2(a,b) scanf("%lld %lld",&a,&b)
  36.  
  37. //scan in
  38. #define sci1(a) scanf("%d",&a)
  39. #define sci2(a,b) scanf("%d %d",&a,&b)
  40. #define sci_str(a) scanf("%s",a)
  41.  
  42. #define pf1(a) printf("%lld\n",a)
  43. #define pf2(a,b) printf("%lld %lld\n",a,b)
  44.  
  45. #define pfi1(a) printf("%d\n",a)
  46. #define pfi2(a,b) printf("%d %d\n",a,b)
  47.  
  48. #define mx 2005
  49. #define mod 10000007
  50. #define PI acos(-1.0)
  51.  
  52. in n,e,t;
  53.  
  54. vector<vector<in> > list;
  55. bool viset[mx];
  56. bool isBipartite(int src)
  57. {
  58. vector<in> colorArr(n, -1);
  59.  
  60.  
  61. colorArr[src] = 1;
  62.  
  63. queue <int> q;
  64. q.push(src);
  65.  
  66. while (!q.empty())
  67. {
  68. int u = q.front();
  69. q.pop();
  70.  
  71.  
  72. for (int v = 0; v < list[u].size(); ++v)
  73. {
  74. if (list[u][v] == u)
  75. return false;
  76. if (colorArr[v] == -1)
  77. {
  78. colorArr[v] = 1 - colorArr[u];
  79. q.push(v);
  80. viset[v]=true;
  81. }
  82. else if ( colorArr[v] == colorArr[u])
  83. return false;
  84. }
  85. }
  86.  
  87. return true;
  88. }
  89.  
  90.  
  91.  
  92. int main()
  93. {
  94. sci1(t);
  95. for(in tc=1;tc<=t;tc++)
  96. {
  97. list.clear();
  98.  
  99. sci2(n,e);
  100. list.resize(n+10);
  101. memset(viset,0, sizeof(viset));
  102. for(in i=0,a,b;i<e;i++)
  103. {
  104. sci2(a,b);
  105. list[a].push_back(b);
  106. list[b].push_back(a);
  107. //cout<<a<<" "<<b<<endl;
  108. }
  109.  
  110. bool sol=true;
  111. for(in i=1;i<=n;i++)
  112. {
  113.  
  114. if(!viset[i])
  115. {
  116. sol &=isBipartite(i);
  117. if(!sol) break;
  118. }
  119.  
  120. }
  121.  
  122. if(sol)
  123. {
  124. printf("Scenario #%d:\n",tc);
  125. printf("No suspicious bugs found!");
  126. if(tc!=t) printf("\n");
  127. } else
  128. {
  129. printf("Scenario #%d:\n",tc);
  130. printf("Suspicious bugs found!\n");
  131. if(tc!=t) printf("\n");
  132. }
  133.  
  134.  
  135.  
  136. }
  137.  
  138.  
  139.  
  140. return 0;
  141. }
Success #stdin #stdout 0s 15240KB
stdin
2
3 3
1 2
2 3
1 3
4 2
1 2
3 4
stdout
Scenario #1:
Suspicious bugs found!

Scenario #2:
No suspicious bugs found!