Advertisement
Guest User

Untitled

a guest
Jul 13th, 2012
315
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 <stdio.h>
  4. #include <string.h>
  5.  
  6. using namespace std;
  7.  
  8. int n, m, u, v, p, ans, matrix[2020][2020], matrixB[2020][2020], vis[2020];
  9.  
  10. int dfs1(int x) {
  11.     ans++;
  12.     vis[x] = 1;
  13.     for(int i = 1; i <= n; i++) {
  14.         if(vis[i] == 0&& matrix[x][i] == 1) dfs1(i);
  15.     }
  16. }
  17.  
  18. int dfs2(int x) {
  19.     ans++;
  20.     vis[x] = 1;
  21.     for(int i = 1; i <= n; i++) {
  22.         if(vis[i] == 0&& matrixB[x][i] == 1) dfs2(i);
  23.     }
  24. }
  25.  
  26. int main(void) {
  27.     while(cin >> n >> m && !(n == 0 && m == 0)) {
  28.         memset(matrix, 0, sizeof(matrix)); memset(matrixB, 0, sizeof(matrixB));
  29.         for(int i = 0; i < m; i++) {
  30.             scanf("%d%d%d", &u, &v, &p);
  31.             if(p == 1) {
  32.                 matrix[u][v] = 1;
  33.                 matrixB[v][u] = 1;
  34.             } else {
  35.                 matrix[u][v] = 1;
  36.                 matrix[v][u] = 1;
  37.                 matrixB[u][v] = 1;
  38.                 matrixB[v][u] = 1;
  39.             }
  40.         }
  41.         memset(vis, 0, sizeof(vis));
  42.         ans = 0;
  43.         dfs1(1);
  44.         if(ans != n) {
  45.             printf("0\n");
  46.         } else {
  47.             memset(vis, 0, sizeof(vis));
  48.             ans = 0; dfs2(1);
  49.             if(ans != n) {
  50.                 printf("0\n");
  51.             } else {
  52.                 printf("1\n");
  53.             }
  54.         }
  55.     }
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement