sadiqul_amin

uva_10004

Apr 16th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.91 KB | None | 0 0
  1. #include <stdio.h>
  2. #define mx 210
  3.  
  4. int path[mx][mx];
  5. int color[mx];
  6. int N, L;
  7. int bidir = 1;
  8.  
  9. void init()
  10. {
  11.     int i, j;
  12.  
  13.     for (i = 0; i < N; i++)
  14.     {
  15.         color[i] = -1;
  16.         for (j = 0; j < N; j++)
  17.         {
  18.             path[i][j] = 0;
  19.         }
  20.     }
  21. }
  22.  
  23.  
  24. int dfs(int x)
  25. {
  26.     int co, i;
  27.  
  28.     if (1 == color[x])
  29.         co = 2;
  30.     else
  31.         co = 1;
  32.  
  33.  
  34.     for (i = 0; i < N; i++)
  35.     {
  36.         if (path[x][i])
  37.         {
  38.             if (-1 == color[i])
  39.             {
  40.                 color[i] = co;
  41.                 dfs(i);
  42.             }
  43.             else if (i != x && color[i] == color[x])
  44.             {
  45.                 bidir = 0;
  46.                 return 1;
  47.             }
  48.         }
  49.     }
  50.     return 1;
  51. }
  52.  
  53. int main()
  54. {
  55.  
  56.     int i;
  57.     int u, v;
  58.  
  59.     while (scanf("%d%d", &N, &L))
  60.     {
  61.         init();
  62.         bidir = 1;
  63.  
  64.         if (0 == N)
  65.             return 0;
  66.  
  67.         for (i = 0; i < L; i++)
  68.         {
  69.             scanf("%d%d", &u, &v);
  70.             path[u][v] = path[v][u] = 1;
  71.         }
  72.  
  73.         color[0] = 1;
  74.         dfs(0);
  75.  
  76.  
  77.         if (bidir)
  78.             printf("BICOLORABLE.\n");
  79.         else
  80.             printf("NOT BICOLORABLE.\n");
  81.        
  82.     }
  83.  
  84. }
Advertisement
Add Comment
Please, Sign In to add comment