PAT 1154 甲级

这道题的坑点是某些散点的颜色会与其他连通的点不同,所以需要在输入的时候就用set容器来装颜色,否则会有一个点出错

#include<cstdio>
#include<cstring>
#include<set>
using namespace std;
struct edge{
    int a,b;
}e[10010];
int n,m,k,color[10010];
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=0;i<m;i++) scanf("%d%d",&e[i].a,&e[i].b);
    scanf("%d",&k);
    while(k--)
    {
        set<int> colortype;
        bool flag=false;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&color[i]);
            colortype.insert(color[i]);
        }
        for(int i=0;i<m;i++)
        {
            int a=e[i].a,b=e[i].b;
            if(color[a]==color[b])
            {
                flag=true;
                break;
            }
        }
        if(flag) printf("No\n");
        else printf("%d-coloring\n",colortype.size());
    }
    return 0;
}
posted @ 2020-03-03 23:56  恰米  阅读(111)  评论(0)    收藏  举报