Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define mx 210
- int path[mx][mx];
- int color[mx];
- int N, L;
- int bidir = 1;
- void init()
- {
- int i, j;
- for (i = 0; i < N; i++)
- {
- color[i] = -1;
- for (j = 0; j < N; j++)
- {
- path[i][j] = 0;
- }
- }
- }
- int dfs(int x)
- {
- int co, i;
- if (1 == color[x])
- co = 2;
- else
- co = 1;
- for (i = 0; i < N; i++)
- {
- if (path[x][i])
- {
- if (-1 == color[i])
- {
- color[i] = co;
- dfs(i);
- }
- else if (i != x && color[i] == color[x])
- {
- bidir = 0;
- return 1;
- }
- }
- }
- return 1;
- }
- int main()
- {
- int i;
- int u, v;
- while (scanf("%d%d", &N, &L))
- {
- init();
- bidir = 1;
- if (0 == N)
- return 0;
- for (i = 0; i < L; i++)
- {
- scanf("%d%d", &u, &v);
- path[u][v] = path[v][u] = 1;
- }
- color[0] = 1;
- dfs(0);
- if (bidir)
- printf("BICOLORABLE.\n");
- else
- printf("NOT BICOLORABLE.\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment