Advertisement
AlexGo11

Untitled

Jan 2nd, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.68 KB | None | 0 0
  1. //Основы теории графов и dfs. Теория. Задача G.
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. int n, m;
  5. vector < vector < int > > g;
  6. vector < int > color;
  7. vector < int > cur;
  8. int is = 0;
  9.  
  10. void dfs(int v, int p) {
  11.     if (color[v] == 1) {
  12.         is = max(is, 1);
  13.         return;
  14.     }
  15.     color[v] = 1;
  16.     for (auto u : g[v]) {
  17.         if (u != p) {
  18.             dfs(u, v);
  19.         }
  20.     }
  21.     color[v] = 2;
  22. }
  23.  
  24. int main() {
  25.     cin >> n >> m;
  26.     g.resize(n);
  27.     color.resize(n, 0);
  28.     for (int i = 0; i < m; i++) {
  29.         int a, b;
  30.         cin >> a >> b;
  31.         a--; b--;
  32.         g[a].push_back(b);
  33.     }
  34.     for (int i = 0; i < n; i++) {
  35.         if (color[i] == 0) {
  36.             dfs(i, -1);
  37.         }
  38.     }
  39.     cout << is;
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement