码迷,mamicode.com
首页 > 其他好文 > 详细

【PAT-一道看着很难的水题】L2-023. 图着色问题

时间:2018-03-11 21:12:27      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:ems   while   判断   分享   lap   algo   break   color   .com   

技术分享图片

水题!没其他想说的,还以为可以搞点高大上的搜索呢!十五分钟,暴力两重循环就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. 图着色问题

标签:ems   while   判断   分享   lap   algo   break   color   .com   

原文地址:https://www.cnblogs.com/zhazhaacmer/p/8545282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!