感觉最近写这些东西有些束手束脚的,害怕用的算法不好而超时
#include <iostream>
#include <vector>
#include <set>
using namespace std;
const int maxv=10010;
vector<int> g[maxv];
int color[maxv];
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++){
int id1,id2;
cin>>id1>>id2;
g[id1].push_back(id2);
g[id2].push_back(id1);
}
int k;
cin>>k;
for(int i=0;i<k;i++){
bool flag=true;
set<int> howmany;
for(int j=0;j<n;j++){
cin>>color[j];
howmany.insert(color[j]);
}
for(int j=0;j<n;j++){
for(int l=0;l<g[j].size();l++){
if(color[j]==color[g[j][l]]){
flag=false;
break;
}
}
if(flag==false){
break;
}
}
if(flag==false){
printf("No\n");
}else{
printf("%d-coloring\n",howmany.size());
}
}
return 0;
}