POJ 1129 (dfs)
2017-03-04 13:20
477 查看
题意 | 思路 |
---|---|
基本涂色问题:这里给出字母A~Z和每个字母相邻的字母,问最少需要需要多少要颜色才能满足 | 思路是:dfs,要注意的是每次dfs是做什么的,要有明确的目的才不会出错。 |
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int M = 30; int isfind; int color[M]; int gragh[M][M]; int ans; int n; int ok(int id,int x) //查找相邻的点用的是否用的一个颜色 { for(int i = 0;i < n; i++) { if(gragh[id][i] && color[i] == x) return false; } return true; } void dfs(int id,int num) { if(isfind) return ; if(id == n) { isfind = true; return ; } for(int i = 1;i <= num; i++) { if(ok(id,i)) { color[id] = i; dfs(id+1,num); } } if(isfind == 0) { ans++; dfs(id,ans); } } int main() { //freopen("in.txt","r",stdin); while(scanf("%d",&n) != EOF && n) { memset(color,0,sizeof(color)); memset(gragh,0,sizeof(gragh)); for(int i = 0;i < n; i++) { char s[1000]; scanf("%s",s); int length = strlen(s); for(int j = 2;j < length; j++) { gragh[s[0]-'A'][s[j]-'A'] = true; } } isfind = false; ans = 1; dfs(0,1); if(ans == 1) { printf("1 channel needed.\n"); } else { printf("%d channels needed.\n",ans); } } return 0; }
相关文章推荐
- poj 1129(ID-DFS四色定理)
- Channel Allocation (poj 1129 dfs)
- POj-1129-Channel Allocation-DFS暴搜
- poj 1129 dfs
- POJ 1129 Channel Allocation(dfs)
- poj 1129 Channel Allocation ( dfs )
- Poj 1129 Channel Allocation(Dfs剪枝)
- POJ 1129 Channel Allocation(DFS + 四色定理)
- POJ Channel Allocation 1129(dfs+四色定理)
- POJ 1129 Channel Allocation DFS搜索 着色问题
- 【基础练习】【DFS】poj1129 Channel Allocation题解
- POJ 1129 Channel Allocation (DFS)
- POJ 1129 Channel Allocation DFS搜索 着色问题
- POJ 1129 Channel Allocation 涂色问题 DFS 回溯 搜索
- (DFS)poj 1129
- poj 1129 Channel Allocation(dfs)
- poj 1129(dfs+图的四色定理)
- POJ 1129 Channel Allocation DFS+四色问题优化
- poj1129 dfs
- POJ Channel Allocation 1129(dfs+四色定理)