pku 1129 Channel Allocation(回溯(经典的图着色问题))
2009-08-10 08:15
246 查看
构图,如果两点互相影响,则连接一条边。
剩下的就是图着色问题,相连的点不能用同一种颜色,问最少需要多少颜色。
深搜+一点点简单的剪枝,0ms
剩下的就是图着色问题,相连的点不能用同一种颜色,问最少需要多少颜色。
深搜+一点点简单的剪枝,0ms
#include <iostream> using namespace std; bool map[26][26]; int n,ans; int color[26]; bool check(int position,int color_index) { for(int i=0;i<n;i++) { if(map[position][i]&&color[i]==color_index) return false; } return true; } void DFS(int index,int used_color_num) { if(used_color_num>=ans) return; if(index==n) { ans=used_color_num; return; } for(int i=1;i<=used_color_num;i++) { if(check(index,i)) { color[index]=i; DFS(index+1,used_color_num); color[index]=0; } } used_color_num++; color[index]=used_color_num; DFS(index+1,used_color_num); color[index]=0; } int main() { char temp_str[30]; while(scanf("%d",&n)&&n) { memset(map,0,sizeof(map)); memset(color,0,sizeof(color)); ans=INT_MAX; for(int i=0;i<n;i++) { scanf("%s",temp_str); for(int j=2;temp_str[j]!='/0';j++) { map[i][temp_str[j]-'A']=true; } } DFS(0,0); if(ans==1) printf("%d channel needed./n",ans); else printf("%d channels needed./n",ans); } return 0; }
相关文章推荐
- 回溯经典-m图着色问题
- 回溯经典-m图着色问题(和地图4色问题的区别)
- 【回溯】图的m着色问题
- pku 2777(经典线段树染色问题)
- UVA - 524 Prime Ring Problem (经典回溯问题)
- 经典回溯八皇后问题--递归
- ACM:着色问题 poj 1129
- poj 1129(图的着色问题)
- 搜索剪枝回溯经典题目 pku 1011 sticks
- LeetCode | 52. N-Queens II 经典算法n后问题回溯法
- 回溯法之经典问题->皇后问题
- 回溯算法----图的M着色问题
- 经典回溯问题-----旅行员售货问题
- 图的m着色问题 (回溯搜索)
- 回溯法特点分析以及经典N皇后问题
- HDU 2553 N皇后问题 --- 经典回溯
- 回溯算法 图m着色问题
- 经典回溯算法之n皇后问题
- 算法设计与分析:第五章 回溯法 5.3图的着色问题
- 并查集经典扩展-pku1182(食物链)-并查集用于等价类问题