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