题意:

N个中继站,相邻的中继站频道不得相同,问最少需要几个频道。

输入输出:

Sample Input

2
A:
B:
4
A:BC
B:ACD
C:ABD
D:BC
4
A:BCD
B:ACD
C:ABD
D:ABC
0

Sample Output

1 channel needed.
3 channels needed.
4 channels needed.

题意抽象+思路:

一张有N个点的无向图,对每个点进行染色,相邻的点颜色不得一致,最少需多少种颜色。DFS即可。

代码:

<span style="font-family:Microsoft YaHei;">int nmax;
bool mapp[30][30], is[30], coll[30];
int col[30]; void dfs(int u){
mem(coll,false);
rep(i,0,25){
if(u!=i && mapp[u][i] && col[i]){
coll[col[i]] = true;
}
}
rep(i,26,1) if(coll[i]){
nmax = i;
break;
}
rep(i,1,26) if(!coll[i]){
col[u] = i;
nmax = max(nmax,i);
break;
}
rep(i,0,25){
if(u!=i && mapp[u][i] && !col[i])
dfs(i);
}
} int main(){
int n;
char s[100]; while(scanf("%d",&n),n){
mem(mapp,false);
mem(is,false);
mem(col,0); while(n--){
scanf("%s",s);
int l=strlen(s);
is[s[0]-'A'] = true;
rep(i,2,l-1){
mapp[s[0]-'A'][s[i]-'A'] = true;
mapp[s[i]-'A'][s[0]-'A'] = true;
is[s[i]-'A'] = true;
}
} nmax = 0;
rep(i,0,25){
if(is[i] && !col[i]) dfs(i); //对i进行染色,并从i开始把那个集合中的点都染上色
} if(nmax==1) printf("%d channel needed.\n",nmax);
else printf("%d channels needed.\n",nmax);
}
}
</span>

poj 1129 Channel Allocation(图着色,DFS)的更多相关文章

  1. 迭代加深搜索 POJ 1129 Channel Allocation

    POJ 1129 Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14191   Acc ...

  2. POJ 1129 Channel Allocation(DFS)

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13173   Accepted: 67 ...

  3. POJ 1129 Channel Allocation DFS 回溯

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15546   Accepted: 78 ...

  4. poj 1129 Channel Allocation ( dfs )

    题目:http://poj.org/problem?id=1129 题意:求最小m,使平面图能染成m色,相邻两块不同色由四色定理可知顶点最多需要4种颜色即可.我们于是从1开始试到3即可. #inclu ...

  5. POJ 1129 Channel Allocation 四色定理dfs

    题目: http://poj.org/problem?id=1129 开始没读懂题,看discuss的做法,都是循环枚举的,很麻烦.然后我就决定dfs,调试了半天终于0ms A了. #include ...

  6. poj 1129 Channel Allocation

    http://poj.org/problem?id=1129 import java.util.*; import java.math.*; public class Main { public st ...

  7. PKU 1129 Channel Allocation(染色问题||搜索+剪枝)

    题目大意建模: 一个有N个节点的无向图,要求对每个节点进行染色,使得相邻两个节点颜色都不同,问最少需要多少种颜色? 那么题目就变成了一个经典的图的染色问题 例如:N=7 A:BCDEFG B:ACDE ...

  8. Channel Allocation (poj 1129 dfs)

    Language: Default Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12 ...

  9. POJ 1129:Channel Allocation 四色定理+暴力搜索

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13357   Accepted: 68 ...

随机推荐

  1. 最新版微软视窗(Windows)作业系统下载(2020-08-19)

    为了更好的使用WSL(Windows Subsystem For Linux),不得不用最新的windows 10 2004版了,这个版本的WSL已经是第二版了,即WSL2.下面给出下载地址 系统发布 ...

  2. Jmeter扩展组件开发(3) - 实现方法

    继承JavaSamplerClient,四种实现方法讲解 前提 JavaSamplerClient要把四种实现方法都继承,编译器才不会报错. com.demo(package包)右键新建一个secon ...

  3. openldap集成ssh 登录

    一 安装nslcd服务 yum install nss-pam-ldapd 二.修改vi /etc/nslcd.conf这个配置文件 修改uri 和base的值 改为你的ldap的地址和用户名 三.  ...

  4. 一文让你掌握软件测试工程师SQL面试题

    数据结构说明 已知有如下4张表: 学生表:student(学号,学生姓名,出生年月,性别) 成绩表:score(学号,课程号,成绩) 课程表:course(课程号,课程名称,教师号) 教师表:teac ...

  5. linux 客户机挂载vitualbox共享文件夹

    1. 安装增强功能包(Guest Additions) 安装好Ubuntu 9.10后,运行Ubuntu并登录.然后在VirtualBox的菜单里选择"设备(Devices)" - ...

  6. python二级 第八套

    第一部分 基本操作 第一题 1. 第二题 1. 字符串的索引  和列表的索引   一样使用 2. 这俩者有什么区别 3. 我的意思想说  切片         里面没有冒号  就是表示取这个索引的 字 ...

  7. 大前端快闪二:react开发模式 一键启动多个服务

    最近全权负责了一个前后端分离的web项目,前端使用create-react-app, 后端使用golang做的api服务. npx create-react-app my-app cd my-app ...

  8. Digital Image Processing

    20190919 Review CCD:高端天文学,敏感度高,速度慢,成本高: CMOS:普遍使用,嵌入手机,速度快,有模式噪声(Pattern Noise,现在可以解决): 空间分辨率和时间分辨率: ...

  9. 突破GD渲染的图片马

    <?php /* The algorithm of injecting the payload into the JPG image, which will keep unchanged aft ...

  10. JVM学习笔记——栈区

    栈区 Stack Area 栈是运行时的单位,堆是存储单位,栈解决程序的运行问题,即程序如何执行,如何处理数据. 每个线程在创建时都创建一个该线程私有的虚拟机栈,每个栈里有许多栈帧,一个栈帧对应一个 ...