#include <iostream>
using namespace std;
const int maxn = 201;
int G[maxn][maxn];
int main(){
fill(G[0], G[0] + maxn * maxn, 0);
int n, m, a, b, q, k, st, t;
cin >> n >> m;
for(int i = 0; i < m; i++){
cin >> a >> b;
G[a][b] = G[b][a] = 1;
}
cin >> q;
for(int i = 0; i < q; i++){
cin >> k >> st;
int temp = st, flag = 1, v[n + 1] = {0};
v[st] = 1;
for(int j = 1; j < k; j++){
cin >> t; v[t] = 1;
if(G[temp][t] == 0 || (j == k - 1 && t != st) || (j != k - 1 && t == st)){
flag = 0;
}else temp = t;
}
for(int i = 1; i < n; i++) if(v[i] == 0) flag = 0;
printf("%s\n", flag?"YES":"NO");
}
return 0;
}
1122 Hamiltonian Cycle
最新推荐文章于 2022-11-19 15:31:31 发布
本文深入探讨了基于图数据结构的遍历算法实现,通过C++代码详细展示了如何构建图并进行路径验证,确保每条路径的有效性和完整性,为理解复杂图算法提供了实践指导。

296

被折叠的 条评论
为什么被折叠?



