较简单的题,属于阅读题。。
一次ac了:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
scanf("%d %d",&n,&m);
vector<vector<int> > v(n);
vector<int> color(n);
for(int i=0;i<m;i++){
int a,b;
scanf("%d %d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
int k;
bool flag=false;
scanf("%d",&k);
for(int i=0;i<k;i++){
flag=false;
map<int,int> mp;
for(int j=0;j<n;j++){
scanf("%d",&color[j]);
mp[color[j]]++;
}
for(int j=0;j<n;j++){
for(int l=0;l<v[j].size();l++){
if(color[v[j][l]]==color[j]){
flag=true;
break;
}
}
if(flag)break;
}
if(flag) printf("No\n");
else printf("%d-coloring\n",mp.size());
}
return 0;
}