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;
}
View Code

 

以上是关于PAT-一道看着很难的水题L2-023. 图着色问题的主要内容,如果未能解决你的问题,请参考以下文章

L2-023 图着色问题 (25分)(java)

PTA L2-023 图着色问题-前向星建图 团体程序设计天梯赛-练习集

天梯赛 L2-023. 图着色问题

ACM_一道耗时间的水题

PAT甲题题解-1011. World Cup Betting (20)-误导人的水题。。。

水果,一道对结构体排序的水题