Advertisement
Guest User

Untitled

a guest
Jul 18th, 2012
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #include <vector>
  2. #include <algorithm>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. #define MAXV 2020
  8.  
  9. using namespace std;
  10.  
  11. int i, n, m, p, v, w, ans;
  12. vector<int> used, component, order, g[MAXV], gr[MAXV];
  13.  
  14. void dfs1(int x) {
  15.     used[x] = 1;
  16.     for(int b = 0; b < g[x].size(); b++) {
  17.         if(!used[g[x][b]]) dfs1(g[x][b]);
  18.     }
  19.     order.push_back(x);
  20. }
  21.  
  22. void dfs2(int x) {
  23.     used[x] = 1;
  24.     for(int b = 0; b < gr[x].size(); b++) {
  25.         if(!used[gr[x][b]]) dfs2(gr[x][b]);
  26.     }
  27. }
  28.  
  29. int main(void) {
  30.     while(scanf("%d%d", &n, &m) && n > 0 && m > 0) {
  31.         ans = 0;
  32.         for(i = 1; i <= n; i++) {
  33.             g[i].clear(); gr[i].clear();
  34.         }
  35.         order.clear();
  36.         component.clear();
  37.         for(i = 0; i < m; i++) {
  38.             scanf("%d%d%d", &v, &w, &p);
  39.             if(p == 1) {
  40.                 g[v].push_back(w); gr[w].push_back(v);
  41.             } else if(p == 2) {
  42.                 g[v].push_back(w); g[w].push_back(v);
  43.                 gr[v].push_back(w); gr[w].push_back(v);
  44.             }
  45.         }
  46.         used.assign(n+1, false);
  47.         for(i = 1; i <= n; i++) if(!used[i]) dfs1(i);
  48.         used.assign(n+1, false);
  49.         reverse(order.begin(), order.end());
  50.         bool strong = true;
  51.         for(i = 0; i < order.size(); i++) {
  52.             int v = order[i];
  53.             if(!used[v]) {
  54.                 dfs2(v);
  55.                 ans++;
  56.             }
  57.         }
  58.         if(ans == 1) {
  59.             puts("1");
  60.         } else {
  61.             puts("0");
  62.         }
  63.     }
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement