poj 1129 四色定理
2012-07-22 21:17
411 查看
#include <iostream> using namespace std; int map[27][27]; int n; int ans[27];//记录每个点的着色的情况 int ok(int s) { for(int i = 0; i < n; i++)//判断是否有相连的并且与该点的颜色相等的 { if(map[i][s]==1 && ans[i]==ans[s]) return 0; } return 1; } int dfs(int i,int m)//参数:开始的位置,颜色的多少 { if(i == n) //该部分是指所有的点都已经着色成功了 return n ; for(ans[i] = 1;ans[i]<=m ; ans[i]++)//已经假定了m种颜色 { if(!ok(i)) //若该点着色的是这个颜色 就继续下面的 否则对下面的点进行着色。 continue; else return dfs(i+1,m); //对下一个点进行着色。 } return 0; } int main() { int i,j; char str[35]; int ls; while(scanf("%d",&n),n) { getchar();//去掉回车键 memset(map,0,sizeof(map)); for(i = 0 ;i < n ; i++)//数据输入变成图保存 { gets(str); ls = strlen(str); for(j = 2 ; j < ls ; j++) map[i][str[j]-'A'] = 1; } memset(ans,0,sizeof(ans)); for(i = 1; i <= 4 ; i++)//四色定理,枚举使用的颜色 { if(dfs(0,i)) break; } if(i>1) printf("%d channels needed.\n",i); else printf("1 channel needed.\n"); } system("pause"); return 0; }
相关文章推荐
- POJ 1129-Channel Allocation(四色定理+迭代深搜)
- poj 1129(ID-DFS四色定理)
- POJ 1129:Channel Allocation 四色定理+暴力搜索
- POJ 1129 图的四色定理
- POJ 1129:Channel Allocation 四色定理+暴力搜索
- poj 1129 Channel Allocation(四色定理+着色问题)
- POJ 1129 Channel Allocation DFS+四色问题优化
- poj 1129 DFS+四色问题 Channel Allocation
- POJ 1129 四色问题 暴力搜索
- POJ 1129 Channel Allocation 涂色问题 DFS 回溯 搜索
- POJ 1006 中国余数定理
- poj 1006 Biorhythms 中国剩余定理
- POJ 1129 Channel Allocation DFS搜索 着色问题
- poj 1129 Channel Allocation
- poj 2154 polya定理+数论知识
- POJ Channel Allocation 1129(dfs+四色定理)
- POJ1286:Necklace of Beads(POLYA定理应用)
- POJ 1286 Necklace of Beads (Polya定理)
- poj 2409 Let it Bead(polya 定理)
- 四色定理+dfs(poj 1129)