POJ 1129 Channel Allocation(四色定理)
Channel Allocation
题意:
题目大概是说无线电可以覆盖的范围很大,我们可以通过中继器继续扩大范围,但是中继器的信号干扰也很强,同一频道用相邻的中继器会使信号相互干扰,大大降低他们的收听质量,所以同一频道的电台尽量使用不相邻的中继器
给出了每个中继器的相邻情况,问最少有几个频道用中继器不会产生干扰
把题意抽象出来,将中继器看作结点,相邻的两个中继器之间连一条边,用最少的颜色给相邻的结点涂上不一样的颜色
这就牵扯四色定理了,四色定理是这样说的:
任何一张地图只用四种颜色就能使具有共同边界的国家着上不同的颜色。所以我们可以确定答案一定不超过4,这样就可以直接定义四种颜色为1 、2、3、 4去染色,一旦两个结点之前存在边并且和上一个结点颜色不一样就标记一下,如果颜色相同就给当前结点染上不一样的颜色,去递归下一个结点
int mapp[26][26],ans[26];
char s[28];
int n;void dfs(int k){int flag;if(k == n) return ; // 所有点都已经跑完 退出循环 for(int i=1;i<=4;i++){ // 基于四色定理 flag = 0;for(int j=0;j<n;j++){ // 两点之间存在边并且这个结点与上一个结点颜色不同 if(mapp[k][j] && ans[j] == i){flag = 1;break;}}if(flag == 0){ // 说明新的结点与上一个结点颜色相同 ans[k] = i;dfs(k+1);break;}}
}int main(){while(~scanf("%d",&n) && n != 0){memset(mapp,0,sizeof mapp);memset(ans,0,sizeof ans);for(int i=0;i<n;i++){scanf("%s",s);for(int j=2;s[j];j++){ // 将相邻的点存为1 mapp[i][s[j]-'A'] = 1; mapp[s[j]-'A'][i] = 1;}}dfs(0); // 从第一个点开始 sort(ans,ans+26);if(ans[25] == 1){printf("%d channel needed.\n",ans[25]);}else{printf("%d channels needed.\n",ans[25]);}}return 0;
}
POJ 1129 Channel Allocation(四色定理)相关推荐
- POJ 1129 Channel Allocation DFS+四色问题优化
一道DFS题,能过采用四色问题的结论进行优化. 题目链接:http://poj.org/problem?id=1129 问题是说有n个广播站,相邻的广播站为了避免干扰,需要用不同的频道,最少需要有多少 ...
- POJ - 1129
POJ - 1129题目链接 要想AC此题,必先要了解四色定理 我在写此题之前并不知道有那么个四色定理,上手就WA了五发,后来查了别人的题解,才知道这是一个四色填图,在此处我还是有个疑问,当有26个点 ...
- poj 1129 也算是遍历的吧 两种方法
我当时是不懂题目是什么意思的,看了别人的才知道原来是所谓的四色问题.我也不知道是什么东东,查了才懂.要学的还有很多呢!太弱了.关键把结构存储进去后,每次遍历它的邻接节点.并把用的颜色标记下来.然后再每 ...
- poj 1129 四色原理DFS
如题:http://poj.org/problem?id=1129 用中继器(repeater)给每个接受者(receiver)发送信号,为了防止信号干扰,两个相邻的广播站之间的中继器要不相同 ...
- POJ-1129 Channel Allocation DFS搜索
题意:给定一张图,现在对这张图进行染色,且相邻的两个点的颜色不能够相同,问最少要用多少种颜色? 思路:有一下贪心思路,对于没一个节点,我们对其周围的结点进行遍历,对有颜色的邻节点的颜色进行统计,选取一 ...
- Channel Allocation HDU1373
染色问题:相邻不能染同一种颜色 最少需要的颜色的数量=最大团点的数量 #include<bits/stdc++.h> using namespace std;#define N 27int ...
- HDU 1373(Channel Allocation)
计算最大团的结点数量,套用标准模板即可,详细见注释. #include <iostream> #include <string> #include <algorithm& ...
- 《从一到无穷大》中的程序思维
这篇文章是最近几天看李永乐老师的<从一到无穷大>读书专栏而想到的一篇文章.在第一章 「做做数学游戏」 的简单数学,以及第二章 「空间.时间和爱因斯坦」 的拓扑学中(其实也是因为李老师目前只 ...
- (精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目
POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: ...
- POJ刷题列表——正在进行
转载自:http://blog.csdn.net/pyub153/article/details/50480333 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心 ...
最新文章
- 加拿大两院院士裴健:搜索皆智能​,智能皆搜索
- c++ clr编译dll在c#调用时出现“试图加载不正确的格式”“找不到dll”错误的解决...
- python批量生成图_python图像处理-批量生成纯色图片
- AWS 用户指南笔记
- android 禁用dlsym_Android7.0对dlopen的改变——读取私有.so结果变化
- Python 数据分析三剑客之 Pandas(三):算术运算与缺失值的处理
- 2021年中国高精地图产业研究分析
- python元类使用场景_Python元类使用简介
- F5/LVS/Nginx/HAProxy硬软件级网络负载均衡介绍
- 程序员和注册会计师的地位_“注册会计师和律师哪个地位高?”这3张图给出了答案!...
- Spring学习总结(12)——Druid连接池及监控在spring配置
- java 框架介绍------权限框架
- HDLM for AIX安装
- 面向对象组件开发一个弹窗
- centos7 安装mysql_第02期:ClickHouse 单机部署以及从 MySQL 增量同步数据
- mysql group_concat拼接字符串长度
- matlab中count()怎么用,count(1)这里面的1是什么意思
- 机器人C++库(6)Robotics Library 例程三之正逆运动学计算
- 长沙市取消职称英语和计算机,哪些城市已取消职称英语考试?
- 《企业管理学》—战略管理与目标管理知识点总结