![]()
1 #pragma warning(disable:4996)
2 #define _CRT_SECURE_NO_WARNINGS
3
4 #include <iostream>
5 #include <algorithm>
6 #include <cmath>
7 #include <vector>
8 #include <map>
9 #include <set>
10 #include <unordered_set>
11 #include <unordered_map>
12 #include <queue>
13 #include <cmath>
14 #include <string>
15 using namespace std;
16 vector<int> edge[210];
17 int main()
18 {
19 int n, m, k;
20 cin >> n >> m;
21 for (int i = 0; i < m; ++i) {
22 int a, b;
23 cin >> a >> b;
24 edge[a].push_back(b);
25 edge[b].push_back(a);
26 }
27 cin >> k;
28 for (int i = 0; i < k; ++i) {
29 int num;
30 cin >> num;
31 vector<int> v(num);
32 set<int> s;
33 for (int j = 0; j < num; ++j) {
34 cin >> v[j];
35 }
36 int flag = 0;
37 if (n == num-1)
38 if (v.front() == v.back())
39 for (int i = 1; i < v.size(); ++i) {
40 if (find(edge[v[i - 1]].begin(), edge[v[i - 1]].end(), v[i]) == edge[v[i - 1]].end()) {
41 flag = 1;
42 break;
43 }
44 }
45 else flag = 1;
46 else flag = 1;
47 if(!flag)
48 for (int i = 0; i < v.size() - 1; ++i) {
49 if (s.find(v[i]) != s.end()) {
50 flag = 1;
51 break;
52 }
53 else {
54 s.insert(v[i]);
55 }
56 }
57 if (!flag) cout << "YES" << endl;
58 else cout << "NO" << endl;
59 }
60 return 0;
61 }