题目链接:http://poj.org/problem?id=1129

解题报告:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; bool map[][];
int mark[];
char str[];
int n,ans; ///判断给x这个节点,上color这种颜色是否可以
bool Judge(int x,int color)
{
for(int i=; i<n; i++)
{
if(i!=x&&map[x][i]&&mark[i]==color)///如果子节点同色则不可以
return ;
}
return ;
} ///搜索第pos个节点
void dfs(int pos)
{
///搜索完毕。
if(pos==n)
{
///*max_element(mark,mark+n);是查找[mark,mark+n)中的最大者
ans=min(ans,*max_element(mark,mark+n));
return ;
}
///从pos这个节点开始搜起
for(int i=pos; i<n; i++)
{
///四色定理
for(int j=; j<=; j++)
{
///给i这个节点上j这种颜色是否符合
if(Judge(i,j))
{
///符合题意的话,给i上j这种颜色
mark[i]=j;
///搜索下一个节点
dfs(i+);
}
}
}
} int main()
{
while(scanf("%d",&n),n)
{
memset(map,false,sizeof(map));
for(int i=; i<n; i++)
{
scanf("%s",str);
for(int j=; j<strlen(str); j++)
{
map[i][str[j]-'A']=true;
map[str[j]-'A'][i]=true;
}
}
memset(mark,,sizeof(mark));
ans=;
mark[]=;
dfs();
if(ans==)
{
printf("1 channel needed.\n");
}
else
printf("%d channels needed.\n",ans);
}
return ;
}

最新文章

  1. sql server 中隐藏掉无关数据库
  2. 基于Treeview控件遍历本地磁盘
  3. JavaScript判断字符串是否含有中文(实用)
  4. IOS UIwebview 背景色调整
  5. UNIX标准化及实现之标准之间的冲突
  6. 多路复用的server模型
  7. Swift - 41 - swift1.2新特性(2)
  8. T4模板之基础篇
  9. (转)$.extend()方法和(function($){...})(jQuery)详解
  10. jquery层次选择器:空格 > next + nextAll ~ siblings
  11. ptrdiff_t 和 size_t
  12. python第十六天
  13. Java设计模式之原型设计模式
  14. Excel 恢复默认行高、列宽
  15. Gym 101873D - Pants On Fire - [warshall算法求传递闭包]
  16. Spark 调优(转)
  17. [原创]HTML 用div模拟select下拉框
  18. 异常Throwable
  19. UVa 674 Coin Change(完全背包)
  20. C++显式转换

热门文章

  1. linux安装php7
  2. python3 读取表格的数据
  3. 2.4 Rust Ownership
  4. xml和json互转
  5. MyCnblog Style
  6. Django-4 模板层
  7. python3+Appium自动化09-Capability配置数据分离实践
  8. 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解
  9. 安装rails遇到的问题
  10. linux_api之文件属性