UVA 10004 - Bicoloring
2011-12-06 18:54
399 查看
模拟染色,因为只有两种颜色,所以分别用 0、 1 代表这两种颜色,然后从0开始深搜,如果
每个点都能染上色,且相邻两点的颜色不同,则符合要求。
每个点都能染上色,且相邻两点的颜色不同,则符合要求。
#include<stdio.h> #include<string.h> #define MAXN 210 int map[MAXN][MAXN]; int paint[MAXN]; int u, v, M, N; bool dfs( int i, int color) { for( int j = 0; j < N; j ++) { if( map[i][j]) { if( paint[j] != -1 && paint[j] != color) return false; else if( paint[j] == - 1) { paint[j] = color; if( !dfs( j, 1 - color)) //用 0和1分别代表白‘黑两种颜色 return false; } } } return true; } void init() { scanf( "%d", &M); memset( map, 0, sizeof map); for( int i = 0; i < M; i ++) { scanf( "%d%d", &u, &v); map[u][v] = map[v][u] = true; } memset( paint, -1, sizeof paint); paint[0] = 1;// 如果这里等于0的话则dfs( 0, 1)。 } int main() { while( scanf( "%d", &N), N) { init(); if( dfs( 0, 0)) printf( "BICOLORABLE.\n"); else printf( "NOT BICOLORABLE.\n"); } return 0; }
相关文章推荐
- uva10004 Bicoloring 黑白染色问题,DFS
- uva10004 Bicoloring 二分图染色
- uva 10004 - Bicoloring
- UVA - 10004 Bicoloring (dfs和bfs两种解法)
- UVA 10004 - Bicoloring(DFS)
- uva10004 Bicoloring 黑白染色问题,DFS
- uva 10004 Bicoloring(二染色)
- UVA 10004 Bicoloring
- UVA 10004 Bicoloring
- UVA 10004 Bicoloring
- UVA - 10004 Bicoloring(判断二分图——交叉染色法 / 带权并查集)
- UVA - 10004 Bicoloring
- UVa 10004 Bicoloring (DFS&二分图)
- UVa 10004 - Bicoloring
- UVA 10004 - Bicoloring
- UVA 10004 Bicoloring
- uva 10004 Bicoloring
- UVA - 10004 Bicoloring
- UVa 10004 Bicoloring(二分图判定+DFS)
- UVa 10004 Bicoloring