代码:(水题,不分析了哈:)
#include <iostream> #include <vector> #include <set> using namespace std; struct edge { int vertex1,vertex2; }temp; vector<edge> g; int main() { int n,m,k,id; cin>>n>>m; for(int i=0;i<m;++i) { cin>>temp.vertex1>>temp.vertex2; g.push_back(temp); } cin>>k; while(k--) { set<int> s; vector<int> hash; for(int i=0;i<n;++i) { cin>>id; s.insert(id); hash.push_back(id); } bool flag=true; for(auto i:g) if(hash[i.vertex1]==hash[i.vertex2]) {flag=false;break;} if(flag) printf("%d-coloring\n",(int)s.size()); else cout<<"No"<<endl; } return 0; }