对于每个人,我用了一个set记录他的好友
#include<iostream>
#include<vector>
#include<set>
using namespace std;
static set<int> s[210];
static set<int> f;
int N,M,K;
int main(){
cin>>N>>M;
for(int i=0;i<M;i++){
int a,b;
scanf("%d %d",&a,&b);
s[a].insert(b);
s[b].insert(a);
}
cin>>K;
for(int i=1;i<=K;i++){
f.clear();
int L;
bool flag1=true;
bool flag2=true;
scanf("%d",&L);
for(int j=0;j<L;j++){
int index;
scanf("%d",&index);
if(!flag1) continue;
if(j==0){
f=s[index];
}else{
if(f.find(index)==f.end()){
flag1=false;
}else{
f.erase(f.find(index));
if(f.size()==0) continue;
vector<int> v;
for(auto it=f.begin();it!=f.end();it++){
if(s[index].find(*it)==s[index].end()){
v.push_back(*it);
}
}
for(auto it:v){
f.erase(f.find(it));
}
}
}
}
if(f.size()!=0) flag2=false;
if(!flag1){
printf("Area %d needs help.\n",i);
}else if(!flag2){
printf("Area %d may invite more people, such as %d.\n",i,*f.begin());
}else{
printf("Area %d is OK.\n",i);
}
}
return 0;
}