fork download
  1.  
  2. using namespace std;
  3. #include <vector>
  4. #include <stack>
  5.  
  6. typedef vector<int> Vi;
  7. typedef vector<Vi> Gi;
  8. typedef stack<int> Si;
  9. typedef vector<bool> Vb;
  10.  
  11. Gi grafo, grafoRev;
  12. Si pila, pilaRev;
  13. Vb visitado, visitadoRev;
  14.  
  15. int N, M, u, v, p;
  16.  
  17. void DFS(int nodo)
  18. {
  19. visitado[nodo] = true;
  20.  
  21. for (int i = 0; i < grafo[nodo].size(); i++)
  22. {
  23. if (!visitado[grafo[nodo][i]])
  24. DFS(grafo[nodo][i]);
  25. }
  26.  
  27. pila.push(nodo);
  28. }
  29.  
  30. void DFS_Rev(int nodo)
  31. {
  32. visitadoRev[nodo] = true;
  33.  
  34. for (int i = 0; i < grafoRev[nodo].size(); i++)
  35. {
  36. if (!visitadoRev[grafoRev[nodo][i]])
  37. DFS_Rev(grafoRev[nodo][i]);
  38. }
  39.  
  40. pilaRev.push(nodo);
  41. }
  42.  
  43. int main()
  44. {
  45. /*
  46. 4 5
  47. 1 2 1
  48. 1 3 2
  49. 2 4 1
  50. 3 4 1
  51. 4 1 2
  52. 3 2
  53. 1 2 2
  54. 1 3 2
  55. 3 2
  56. 1 2 2
  57. 1 3 1
  58. 4 2
  59. 1 2 2
  60. 3 4 2
  61. 0 0
  62. */
  63.  
  64. while (true)
  65. {
  66. scanf("%d %d", &N, &M);
  67.  
  68. if (N == 0 && M == 0)
  69. break;
  70.  
  71. grafo = Gi(N);
  72. grafoRev = Gi(N);
  73.  
  74. visitado = Vb(N);
  75. visitadoRev = Vb(N);
  76.  
  77. for (int i = 0;i < M;i++)
  78. {
  79. scanf("%d %d %d", &u, &v, &p);
  80.  
  81. u--; v--;
  82.  
  83. if (p == 1)
  84. {
  85. grafo[u].push_back(v);
  86. grafoRev[v].push_back(u);
  87. }
  88. else {
  89. grafo[u].push_back(v);
  90. grafoRev[v].push_back(u);
  91. grafo[v].push_back(u);
  92. grafoRev[u].push_back(v);
  93. }
  94. }
  95.  
  96.  
  97. for (int i = 0;i < N;i++)
  98. {
  99. if (!visitado[i])
  100. DFS(i);
  101. }
  102.  
  103. DFS_Rev(pila.top());
  104. printf("%d\n", pilaRev.size == N ? 1 : 0);
  105. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
4 5
1 2 1
1 3 2
2 4 1
3 4 1
4 1 2
3 2
1 2 2
1 3 2
3 2
1 2 2
1 3 1
4 2
1 2 2
3 4 2
0 0
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:66:22: error: ‘scanf’ was not declared in this scope
 scanf("%d %d", &N, &M);
                      ^
prog.cpp:104:24: error: invalid use of member function ‘std::stack<_Tp, _Sequence>::size_type std::stack<_Tp, _Sequence>::size() const [with _Tp = int; _Sequence = std::deque<int, std::allocator<int> >; std::stack<_Tp, _Sequence>::size_type = long unsigned int]’ (did you forget the ‘()’ ?)
 printf("%d\n", pilaRev.size == N ? 1 : 0);
                ~~~~~~~~^~~~
prog.cpp:104:41: error: ‘printf’ was not declared in this scope
 printf("%d\n", pilaRev.size == N ? 1 : 0);
                                         ^
prog.cpp:105:1: error: expected ‘}’ at end of input
 }
 ^
stdout
Standard output is empty