#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
const int maxv=210;
int g[maxv][maxv]={0};
bool vis[maxv];
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++){
int v1,v2;
cin>>v1>>v2;
g[v1][v2]=1;
g[v2][v1]=1;
}
int k;
cin>>k;
for(int i=0;i<k;i++){
int num;
cin>>num;
vector<int> list;
memset(vis,false,sizeof(vis));
bool isclique=true;
for(int j=0;j<num;j++){
int temp;
cin>>temp;
list.push_back(temp);
vis[temp]=true;
}
for(int j=0;j<list.size()-1;j++){
for(int l=j+1;l<list.size();l++){
if(g[list[j]][list[l]]==0){
isclique=false;
break;
}
}
if(isclique==false){
break;
}
}
bool ismax=true;
for(int j=1;j<=n;j++){
if(vis[j]==false){
bool canfind=true;
for(int l=0;l<list.size();l++){
if(g[j][list[l]]==0){
canfind=false;
break;
}
}
if(canfind==true){
ismax=false;
break;
}
}
}
if(isclique==false){
printf("Not a Clique\n");
}else if(ismax==false){
printf("Not Maximal\n");
}else{
printf("Yes\n");
}
}
return 0;
}
pat a 1142
最新推荐文章于 2021-09-03 10:45:14 发布