//#include "stdafx.h"
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=210;
int n;
int m;
int G[maxn][maxn]={0};
vector<int>vec;
int main(){
// freopen("c://jin.txt","r",stdin);
cin>>n>>m;
int u,v;
for(int i=0;i<m;i++)
{cin>>u>>v;
G[u][v]=G[v][u]=1;
}
int k;
cin>>k;
while(k--){
cin>>m;
int hashtable[maxn]={0};
vec.clear();
int flag=0;
while(m--){
cin>>u;
vec.push_back(u);
if(m&&hashtable[u])flag=1;//第一个和最后一个点一定是一样的,中间点不可以有重复。
hashtable[u]=1;
}
if(flag||vec.size()!=n+1||vec[0]!=vec[vec.size()-1]){cout<<"NO"<<endl;continue;}//一共有n+1个点,注意防止只有一个点 1这种情况
for(int i=0;i<vec.size()-1;i++)
{if(G[vec[i]][vec[i+1]]==0)flag=1;//相邻点之间有路径链接
}
if(flag){cout<<"NO"<<endl;continue;}
else {cout<<"YES"<<endl;}
}
// freopen("CON","r",stdin);
// system("pause");
return 0;
}
PAT1122. Hamiltonian Cycle (哈密尔顿回路)
最新推荐文章于 2022-11-19 15:31:31 发布