天梯赛 L2-023. (模拟) 图着色问题
题目描述
图着色问题是一个著名的NP完全问题。给定无向图 G = (V, E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?
但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。
输入格式:
输入在第一行给出3个整数V(0 < V <= 500)、E(>= 0)和K(0 < K <= V),分别是无向图的顶点数、边数、以及颜色数。顶点和颜色都从1到V编号。随后E行,每行给出一条边的两个端点的编号。在图的信息给出之后,给出了一个正整数N(<= 20),是待检查的颜色分配方案的个数。随后N行,每行顺次给出V个顶点的颜色(第i个数字表示第i个顶点的颜色),数字间以空格分隔。题目保证给定的无向图是合法的(即不存在自回路和重边)。
输出格式:
对每种颜色分配方案,如果是图着色问题的一个解则输出“Yes”,否则输出“No”,每句占一行。
输入样例:
6 8 3
2 1
1 3
4 6
2 5
2 4
5 4
5 6
3 6
4
1 2 3 3 1 2
4 5 6 6 4 5
1 2 3 4 5 6
2 3 4 2 3 4
输出样例:
Yes
Yes
No
No
分析:
判断对于给定了v各点,e条边的无向图,看能不能用k种颜色给这个图进行染色,要求两个直接联通的定点不能用相同的颜色进行染色。
除了要判断是否连通的两点是不同的颜色外,还要判断总共的颜色的个数一定要等于k。
染色的个数可以在给每一个顶点赋予颜色的时候直接计算,至于是否两点的颜色一样,可以在每次输入的时候判断标号比他小的所有的直接联通的点两点间的颜色,(因为存的时候是无向图,正向和反向的两条边都存下来了)。
代码:
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int road[550][550]= {0}; //用来记录两点之间有没有直接连通
int color[550];//某一点被染成的颜色
int vis[550];//看某一种颜色有没有出现过
int main()
{
int v,e,k,a,b;
scanf("%d%d%d",&v,&e,&k);
for(int i=0; i<e; i++)
{
scanf("%d%d",&a,&b);
road[a][b]=road[b][a]=1;//标记这两点之间有通路,而且是一个无向图
}
int n,flag,c_num;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
flag=0;//标记到当当前为止这种染色方案知否可行
c_num=0;//这种染色方案里面所用到的颜色数
memset(vis,0,sizeof(vis));
for(int j=1; j<=v; j++)
{
scanf("%d",&color[j]);//给这个点赋予颜色
if(vis[color[j]]==0)//当前这个点的颜色没有出现过
{
vis[color[j]]=1;
c_num++;
}
if(flag==0&&c_num<=k)//当前这种方案可行,并且颜色数目也不大于所要求的k,如果不满足的话就直接没必要在循环这边了
{
for(int x=1; x<j; x++)//找所有的与当前点连通的其他的点
{
if(road[x][j]==1&&color[x]==color[j])//友连通并且两点的颜色一样
{
flag=1;//这样就是不满足染色方案的了
}
}
}
}
if(flag==1||c_num!=k)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}
天梯赛 L2-023. (模拟) 图着色问题的更多相关文章
- PTA天梯赛L2
L2-001 紧急救援 题意:就是给你一张n<500的图:让你求最短路径,最短路条数,以及路径: 做法,先用dijkstra求最短路,然后dfs找最短路条数,以及点权的最大值: 一般dfs不就可 ...
- 天梯赛 L2-002. (模拟) 链表去重
题目链接 题目描述 给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点.即对任意键值K,只有键值或其绝对值等于K的第一个结点可以被保留.同时,所有被删除的结点必须被保存 ...
- PAT 天梯赛 L2-025. 分而治之 【图】
题目链接 https://www.patest.cn/contests/gplt/L2-025 思路 只要把被攻下的城市标记一下 与 其他城市之间的通路都取消 然后判断一下剩下的城市 是否都是孤立的 ...
- PTA L2-023 图着色问题-前向星建图 团体程序设计天梯赛-练习集
L2-023 图着色问题 (25 分) 图着色问题是一个著名的NP完全问题.给定无向图,,问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题并不是要你解 ...
- 团体程序设计天梯赛L2-023 图着色问题 2017-04-17 09:28 269人阅读 评论(0) 收藏
L2-023. 图着色问题 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 图着色问题是一个著名的NP完全问题.给定无向图 G ...
- PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)
Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...
- 2019天梯赛练习题(L2专项练习)
7-2 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序 ...
- 天梯杯 L2-023 图着色问题
L2-023. 图着色问题 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 图着色问题是一个著名的NP完全问题.给定无向图 G ...
- 第四届CCCC团体程序设计天梯赛 后记
一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...
随机推荐
- 使用robot封装一个模拟键盘复制粘贴并按下回车的方法
/** * 复制数据到剪切板并粘贴出来并按下回车 * @param writeMe 需要粘贴的地址 * @throws java.awt.AWTException */ public void use ...
- PHP 常用函数总结(一)
重点: 看函数的 ‘参数’ 和 ‘返回值’ 文档:http://www.w3school.com.cn/php/php_ref_array.asp http://www.w3school.com.cn ...
- Eslint 配置及规则说明(报错)
https://blog.csdn.net/violetjack0808/article/details/72620859 https://blog.csdn.net/hsl0530hsl/artic ...
- Qt中 QString 转 char*
Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换 Qt再使用第三方开源库时,由于库的类型基本上都是标准的 ...
- CodeForces - 988D(思维STL)
原文地址:https://blog.csdn.net/weixin_39453270/article/details/80548442 博主已经讲的很好了 题意: 从一个序列中,选出一个集合,使得集合 ...
- 【刷题】BZOJ 3668 [Noi2014]起床困难综合症
Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...
- JDK中的SimpleDateFormat线程非安全
在JDK中使用SimpleDateFormat的时候都会遇到线程安全的问题,在JDK文档中也说明了该类是线程非安全的,建议对于每个线程都创建一个SimpleDateFormat对象.如下面一个Case ...
- CSU1911 Card Game 【FWT】
题目链接 CSU1911 题解 FWT模板题 #include<algorithm> #include<iostream> #include<cstdlib> #i ...
- 文档比较比对工具Beyond Compare
Beyond Compare 可以比较文件夹或文件
- pg_upgrade升级报错:Only the install user can be defined in the new cluster
前两天pg11刚出来,打算测试一下,想将测试库升级到pg11,之前测试库的版本是pg9.6,后面我将它升到了pg10,打算在pg10的版本基础上升级到pg11. 但执行时,多次报出: Performi ...