首页 > 代码库 > DFS/四色定理/poj 1129 Channel Allocation
DFS/四色定理/poj 1129 Channel Allocation
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int n; 5 int a[30][30]; 6 int c[30]; 7 8 bool pd(int x,int color) 9 {10 for (int i=1;i<x;i++)11 if (a[x][i]==1 && c[i]==color) return false;12 return true;13 }14 15 bool dfs(int x,int color)16 {17 if (x>n) return true;18 for (int i=1;i<=color;i++)19 if (pd(x,i))20 {21 c[x]=i;22 return dfs(x+1,color);23 }24 return false;25 }26 int main()27 {28 scanf("%d",&n);29 while (n!=0)30 {31 memset(a,0,sizeof(a));32 for (int i=1;i<=n;i++)33 {34 char str[30];35 scanf("%s",str);36 for (int j=2;j<strlen(str);j++)37 {38 a[str[0]-‘A‘+1][str[j]-‘A‘+1]=1;39 a[str[j]-‘A‘+1][str[0]-‘A‘+1]=1;40 }41 }42 if (dfs(1,1)) printf("1 channel needed.\n");43 else44 {45 for (int i=2;i<=4;i++)46 if (dfs(1,i))47 {48 printf("%d channels needed.\n",i);49 break;50 }51 }52 scanf("%d",&n);53 }54 return 0;55 }
DFS/四色定理/poj 1129 Channel Allocation
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。