每次将一个区域安排读入一个空的vector, 在函数JudgeArea中进行类型判断
- 首先检查vector每个元素彼此是否都为朋友, 如是继续, 否则打印出”needs help“, 结束函数
- 再按编号从小到大遍历所有首脑, 判断是否与容器中所有元素都是朋友, 如是则打印出”may invite more people”, 结束函数, 否则继续
- 打印出“is OK”, 结束函数
#include <bits/stdc++.h>
#define MaxNum 200
using namespace std;
bool IsFriends[MaxNum+1][MaxNum+1];
void JudgeArea(const vector<int>& area, int N){
for(int i=0; i<area.size()-1; i++){
for(int j=i+1; j<area.size(); j++){
if(!IsFriends[area[i]][area[j]]){
cout<< "needs help."<< endl;
return;
}
}
}
for(int i=1; i<=N; i++){
int j;
for(j=0; j<area.size(); j++){
if(!IsFriends[i][area[j]]){
break;
}
}
if(j == area.size()){
cout<< "may invite more people, such as "<<i<<".\n";
return;
}
}
cout << "is OK."<<endl;
}
int main() {
int N, M;
int a, b;
cin >> N >> M;
while(M--){
cin>> a>>b;
IsFriends[a][b] = IsFriends[b][a] = true;
}
int K, L, temp;
cin>> K;
vector<int> area;
for(int i=1; i<=K; i++)
{
area.clear();
cin>> L;
while(L--){
cin>> temp;
area.push_back(temp);
}
cout << "Area " << i <<" ";
JudgeArea(area, N);
}
return 0;
}