PAT-一道看着很难的水题L2-023. 图着色问题
Posted 好好学习,天天向上
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT-一道看着很难的水题L2-023. 图着色问题相关的知识,希望对你有一定的参考价值。
水题!没其他想说的,还以为可以搞点高大上的搜索呢!十五分钟,暴力两重循环就OK了!
代码如下:
#include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<queue> #include<set> #include<vector> #include<map> #define maxn 400000 #define inf 0x3f3f3f3f //l2-023; using namespace std; int n,m,k; #define N 505 int a[N][N];//邻接矩阵 int main(){ while(scanf("%d%d%d",&n,&m,&k)!=EOF){ memset(a,0,sizeof(a)); int s,d; for(int i=1;i<=m;i++){ scanf("%d%d",&s,&d); a[s][d]=a[d][s]=1; } int q,c; scanf("%d",&q); while(q--){ int num=n,vis[N]={0},color[N]={0};//判断颜色种类数是否超过K for(int i=1;i<=n;i++){ scanf("%d",&c); vis[c]++; if(vis[c]>1)num--; color[i]=c; } if(num!=k){//第一次写的是num>k —— WA了一个样例! printf("No\\n"); }else{ int flag=0; for(int i=1;i<=n&&!flag;i++){ for(int j=1;j<=n&&!flag;j++){ if(i!=j&&a[i][j]==1){ if(color[i]==color[j]){ flag=1;break; } } } } if(flag)printf("No\\n"); else printf("Yes\\n"); } } } return 0; }
以上是关于PAT-一道看着很难的水题L2-023. 图着色问题的主要内容,如果未能解决你的问题,请参考以下文章
PTA L2-023 图着色问题-前向星建图 团体程序设计天梯赛-练习集