题意:给出各个动物园之间的相连情况,要求每两个相连动物园的动物种类不同 。总共有K种动物,n个动物园,r条路径信息。
#include<iostream>
#include<set>
#include<vector>
using namespace std;
struct Node{
int animal;
vector<int> nei;
}node[10000];
int n,r,k;
int main(){
cin>>n>>r>>k;
getchar();
int a,b;
for(int i=0;i<r;i++){
scanf("%d %d",&a,&b);
node[a].nei.push_back(b);
node[b].nei.push_back(a);
}
int m,ani;
cin>>m;
for(int i=0;i<m;i++){
set<int> se;
bool flag=true;
for(int j=1;j<=n;j++){
scanf("%d",&ani);
node[j].animal=ani;
se.insert(ani);
}
if(se.size()>k) printf("Error: Too many species.\n");
else if(se.size()<k) printf("Error: Too few species.\n");
else{
for(int j=1;j<=n;j++){
for(int t=0;t<node[j].nei.size();t++){
int temp=node[j].nei[t];
if(node[j].animal==node[temp].animal)
{
flag=false;
break;
}
}
if(flag==false) break;
}
if(flag==false) printf("No\n");
else printf("Yes\n");
}
}
return 0;
}