1154 Vertex Coloring (25 分)【难度: 一般 / 知识点: 模拟 枚举】

在这里插入图片描述
https://pintia.cn/problem-sets/994805342720868352/problems/1071785301894295552

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,a[N];
vector<pair<int,int>>ve;
int main(void)
{
    
    
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
    
    
        int a,b; scanf("%d%d",&a,&b);
        a++,b++;//下标从1开始
        ve.push_back({
    
    a,b});
    }
    int t; scanf("%d",&t);
    for(int i=1;i<=t;i++)
    {
    
    
        set<int>st,s;
        for(int j=1;j<=n;j++) scanf("%d",&a[j]),s.insert(a[j]);;
        bool flag=1;
        for(int j=0;j<ve.size();j++)//枚举所有的边
            if(a[ve[j].first]==a[ve[j].second]) //同一种颜色
            {
    
    
                flag=0;
                break;
            }
        if(flag) printf("%d-coloring\n",s.size());
        else puts("No");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/121581447