Java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] incompatible1 = new int[n];
int[] incompatible2 = new int[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
incompatible1[i] = Integer.parseInt(st.nextToken());
incompatible2[i] = Integer.parseInt(st.nextToken());
}
Set<Integer> goods = new HashSet<>();
for (int i = 0; i < m; i++) {
goods.clear();
st = new StringTokenizer(br.readLine());
int K = Integer.parseInt(st.nextToken());
for (int j = 0; j < K; j++) {
goods.add(Integer.parseInt(st.nextToken()));
}
boolean isCompatible = true;
for (int j = 0; j < n; j++) {
if (goods.contains(incompatible1[j]) && goods.contains(incompatible2[j])) {
isCompatible = false;
break;
}
}
System.out.println(isCompatible ? "Yes" : "No");
}
}
}
C++
#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_set>
using namespace std;
const int N = 100010;
int n, m;
int danger1[N], danger2[N];
unordered_set<int> st;
int main() {
scanf("%d%d", &n, &m);
for (int i = 0; i < n; ++i)
scanf("%d%d", &danger1[i], &danger2[i]);
while (m--) {
int k;
scanf("%d", &k);
st.clear();
while (k--) {
int x;
scanf("%d", &x);
st.insert(x);
}
bool flag = true;
for (int i = 0; i < n; ++i)
if (st.count(danger1[i]) && st.count(danger2[i])) {
flag = false;
break;
}
if (flag) printf("Yes\n");
else printf("No\n");
}
return 0;
}