一开始没有将for循环里面的visit初始化,然后一直找不到错误,初始化一下就AC了
#include<iostream>
using namespace std;
bool a[210][210];
int main(){
int n,m,x,y,k,t,temp,isnotclique,isnotmaxclique;
scanf("%d %d",&n,&m);
for(int i=0;i<m;i++){
scanf("%d %d",&x,&y);
a[x][y]=a[y][x]=1;
}
scanf("%d",&k);
for(int i=0;i<k;i++){
scanf("%d",&t);
int p[t];
isnotclique=0,isnotmaxclique=0;
bool visit[n+1]={0};
for(int j=0;j<t;j++){
scanf("%d",&temp);
p[j]=temp;
visit[temp]=1;
}
for(int j=0;j<t;j++){
for(int v=0;v<t;v++){
if(p[j]==p[v]) continue;
if(a[p[j]][p[v]] != 1){
isnotclique=1;
printf("Not a Clique\n");
break;
}
}
if(isnotclique) break;
}
if(isnotclique) continue;
for(int j=1;j<=n;j++){
if(visit[j] == 1) continue;
for(int v=0;v<t;v++){
if(a[j][p[v]]!=1) break;
if(v == t-1) {
isnotmaxclique=1;
printf("Not Maximal\n");
}
}
if(isnotmaxclique) break;
}
if(!isnotmaxclique) printf("Yes\n");
}
return 0;
}