#include <bits/stdc++.h>
using namespace std;
int main(int argc, char** argv) {
vector<int> maps[1001]; //存邻居
int n,m,v[1001],u;
cin>>n>>m>>u;
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
maps[a].push_back(b);
maps[b].push_back(a);
}
int ii;
cin>>ii;
while(ii--){
int kk=0;
set<int>xx; //存颜色数 用set去重
for(int i=1;i<=n;i++){
cin>>v[i];
xx.insert(v[i]);
}
if(xx.size()!=u) cout<<"No"<<endl; //颜色数多或少都是错的
else{
for(int i=1;i<=n;i++){
for(int j=0;j<maps[i].size();j++){
if(v[i]==v[maps[i][j]]) //遍历判断邻居颜色
{
kk=1;
i=n+1;
cout<<"No"<<endl;
break;
}
}
}
if(kk==0) cout<<"Yes"<<endl;
}
}
}
L2-023 图着色问题 (25 分) 详解 set+vector
于 2022-04-22 00:56:29 首次发布