UVA 10004 - Bicoloring
2014-08-17 14:19
369 查看
题目大意:给你 N 个结点, L 条边的强连通图(任意两个结点必有一条直接或间接地的路使这两个结点联通),问能否只用两种颜色这些结点上色,使之相邻的结点颜色都不同
解题思路:从起点出发,DFS 探索所有可走的路,到下一个结点时,给他上色,检查此结点是否有一样颜色的与之连接的结点,如果有,结束探索
解题思路:从起点出发,DFS 探索所有可走的路,到下一个结点时,给他上色,检查此结点是否有一样颜色的与之连接的结点,如果有,结束探索
#include <cstdio> #include <cstring> int edge[205][205], vis[205], flag, n; bool dfs(int cur, int color) { for (int i = 0; i < n; i++) if (edge[cur][i] && vis[i] == vis[cur]) flag = 0; for (int i = 0; i < n && flag; i++) if (edge[cur][i] && !vis[i]) { vis[i] = color * -1; dfs(i, color * -1); } } int main() { while (scanf("%d", &n), n) { memset(edge, 0, sizeof(edge)); memset(vis, 0, sizeof(vis)); flag = vis[0] = 1; int l, a, b; scanf("%d", &l); while (l--) { scanf("%d%d", &a, &b); edge[a][b] = edge[b][a] = 1; } dfs(0, 1); printf(flag ? "BICOLORABLE.\n" : "NOT BICOLORABLE.\n"); } return 0; }
相关文章推荐
- uva 10004 Bicoloring(判断一个图是否是二分图)
- UVa 10004: Bicoloring
- uva10004 Bicoloring(交叉染色法)
- Uva 10004 - Bicoloring
- Bicoloring - UVa 10004 dfs
- UVA - 10004 Bicoloring(判断二分图——交叉染色法 / 带权并查集)
- UVa 10004 - Bicoloring
- UVA - 10004 Bicoloring
- UVa 10004 Bicoloring(二分图判定+DFS)
- UVA 10004 Bicoloring
- uva10004 Bicoloring 黑白染色问题,DFS
- uva 10004 - Bicoloring
- UVA 10004 - Bicoloring(DFS)
- UVA 10004-Bicoloring
- uva 10004 - Bicoloring
- uva10004 Bicoloring 黑白染色问题,DFS
- uva 10004 Bicoloring (二分图染色/求一个二分图)
- UVA 10004 Bicoloring
- uva 10004 Bicoloring 二染色
- uva10004 Bicoloring 二分图染色