Advertisement
Guest User

Untitled

a guest
Aug 21st, 2014
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <math.h>
  4. using namespace std;
  5. vector<int> arr[110];
  6. vector<int> col(110), cont;
  7. bool used[110];
  8. int err = 0;
  9.  
  10. void paint(int v, int color) {
  11.     used[v] = true;
  12.     col[v] = color;
  13.     for (int i = 0; i < arr[v].size(); ++i) {
  14.              if (col[arr[v][i]] == 1)
  15.                 err = -1;
  16.              if (!used[arr[v][i]])
  17.                 if (color == 1)
  18.                     paint(arr[v][i], 2);
  19.                 else
  20.                     paint(arr[v][i], 1);
  21.     }
  22.     col[v] = 2;
  23. }
  24.  
  25. void dfs(int v) {
  26.     used[v] = true;
  27.     for (int i = 0; i < arr[v].size(); ++i) {
  28.              if (!used[arr[v][i]])
  29.                     dfs(arr[v][i]);
  30.     }
  31.     cont.push_back(v);
  32.  
  33. }
  34.  
  35. int main() {
  36.     int n, cur, cur1, m;
  37.     cin >> n >> m;
  38.     for (int i = 1; i <= m; ++i) {
  39.         cin >> cur >> cur1;
  40.             arr[cur].push_back(cur1);
  41.     }
  42.     for (int i = 1; i <= n; ++i)
  43.         if (!used[i])
  44.             paint(i, 1);
  45.     if (err == -1)
  46.         cout << "No";
  47.     else {
  48.         cout << "Yes" << '\n';
  49.         fill(used, used + 109, 0);
  50.         for (int i = 1; i <= n; ++i)
  51.             if (!used[i])
  52.                 dfs(i);
  53.         vector<int>::reverse_iterator it;
  54.         for (it = cont.rbegin(); it != cont.rend(); ++it) {
  55.             cout << *it << " ";
  56.         }
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement