#include <stdio.h>
#include <string.h>
#include <map>
#include <set>
using namespace std;
int G[210][210];
int A[210];
int vis[210];
int N,M,K,numv;
int main()
{
scanf("%d%d",&N,&M);
for(int i=0;i<M;i++)
{
int v1,v2;
scanf("%d%d",&v1,&v2);
G[v1][v2]=true;
G[v2][v1]=true;
}
scanf("%d",&K);
for(int i=0;i<K;i++)
{
bool flag=true;
memset(vis,false,sizeof(vis));
scanf("%d",&numv);
for(int j=0;j<numv;j++)
{
scanf("%d",&A[j]);
}
if(numv!=N+1||A[numv-1]!=A[0])
{
flag=false;
}
else
{
for(int j=1;j<numv;j++)
{
int v1=A[j-1];
int v2=A[j];
if(vis[v2]==true||G[v1][v2]==0)
{
flag=false;
}
vis[v2]=true;
}
}
if(flag)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}
PAT甲1122 Hamiltonian Cycle(25 分)
最新推荐文章于 2022-10-02 17:55:43 发布