ZOJ1084(四色定理)
来源:互联网 发布:js判断ie浏览器版本 编辑:程序博客网 时间:2024/06/06 00:57
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=84
题目大意:根据读取的转发器网络的描述信息,求出所需频道的最小使用量
这题用到了“四色定理” : 任何一张地图只用四种颜色就能使具有共同边界的国家着上不同的颜色。这里所指的相邻区域,是指有一整段边界是公共的。如果两个区域只相遇于一点或有限多点,就不叫相邻的。因为用相同的颜色给它们着色不会引起混淆。
算法分析:本题的转发器网络相当于一个无向图,临近的转发器使用不同的频道相当于无向图的着色问题。相对此题最多需要4中颜色。
当只有一个结点时,只需一种颜色。
否则依次用2和3去求解,如果可以成功,则为求解结果,否则最后结果为4
着色用深度优先搜索进行
#include#include #include#include #include #include using namespace std;int n;int g[30][30];int used[30];char s[30];int dfs(int id, int color)//id:起始着色;color:限制着色{ int flag;//着色成功标志 int i,j; for (i = 1; i <= color; i++)//在规定颜色数中着色 { used[id] = i;//结点id使用第i号着色 flag = 1; for (j = 0; j < id; j++)//判断相邻结点是否采用该着色 { if (g[j][id] && used[j] ==used[id]) { flag = 0;//该颜色已使用,换着色 break; } } if (flag && (id == n - 1 || dfs(id + 1, color)))//该颜色有效,所有结点着色完毕返回true,或给下一结点着色 { return 1; } } return 0;//使用color个颜色着色没有实现全部着色}int main(){ while (scanf("%d", &n) && n) { bool one = true;//只要一种颜色标志,构造无向图 memset(g,0,sizeof(mp));//初始时,清零 int i,j; for (j = 0; j < n;j++) { scanf("%s", s); for (i = 2; i
阅读全文
0 0
- ZOJ1084(四色定理)
- poj_1129_Channel Allocation(四色定理)
- poj 1129(DFS+四色定理)
- 我不是四色定理
- 我不是四色定理
- 四色定理
- 四色问题 zoj1084
- poj 1129 四色定理
- Channel Allocation 四色定理
- 【ZOJ 3810】四色定理
- POJ 1129 Channel Allocation dfs(四色定理)
- poj 1129 Channel Allocation(四色定理+着色问题)
- ZOJ 3810 A Volcanic Island(四色定理模板)
- POJ 1129-Channel Allocation(四色定理+迭代深搜)
- ZOJ3810--A Volcanic Island(四色定理模板)
- POJ 1129 Channel Allocation(DFS + 四色定理)
- POJ 1129 Channel Allocation (dfs+四色定理)
- poj 1129 Channel Allocation (四色定理)
- AJAX原生代码
- Java中byte的取值范围(-128~127)
- 1018 Spring MVC
- 第二章 熟悉Eclipse开发工具
- ionic路由
- ZOJ1084(四色定理)
- STM32F4 ETH-Lwip以太网通信
- .NET框架之---MEF托管可扩展框架
- 科普——未知的公共免费WIFI存在的风险及隐患
- Java的多态
- Android ndk初探(一)
- CentOS-7.2添加桌面快捷方式
- C#中正则表达式的使用
- 理解闭包(一)