#include<iostream>
#include<vector>
#include<string>
using namespace std;
int arc[205][205] = {};
int main()
{
int N, M;
string str;
vector<bool> visited;
cin >> N >> M;
vector<int> te;
while (M--)
{
int a, b;
cin >> a >> b;
arc[a][b] = arc[b][a] = 1;
}
cin >> M;
while (M--)
{
visited.assign(N + 1, false);
int n;
int flag = 0;
cin >> n;
if (n != N + 1)
{
cout << "NO" << endl;
getline(cin, str);
continue;
}
else
{
int tem,past,first;
while (n--)
{
cin >> tem;
if (n == N) first = tem;
if (!(visited[tem] == false || (visited[tem] == true && n == 0 && tem == first)))
{
flag = 1;
getline(cin, str);
break;
}
else
visited[tem] = true;
if (n < N) if (arc[past][tem] == 0)
{
flag = 1;
getline(cin, str);
break;
}
past = tem;
}
}
if(flag==0) cout << "YES" << endl;
else cout << "NO" << endl;
}
}
1122. Hamiltonian Cycle (25)
最新推荐文章于 2022-11-19 15:31:31 发布