// 构建无向图的邻接表 for (int i = 0; i < M; ++i) { int u, v; cin >> u >> v; graph[u].push_back(v); graph[v].push_back(u); }
int K; cin >> K;
for (int i = 0; i < K; ++i) { int Np; cin >> Np; unordered_set<int> to_remove; for (int j = 0; j < Np; ++j) { int city; cin >> city; to_remove.insert(city); }
// 构建剩余城市集合 unordered_set<int> remaining; for (int city = 1; city <= N; ++city) { if (to_remove.find(city) == to_remove.end()) { remaining.insert(city); } }
// 检查剩余城市是否之间有连接 bool isolated = true; for (int u : remaining) { for (int v : graph[u]) { if (remaining.find(v) != remaining.end()) { // u 和 v 都在剩余城市集合中,说明还有边 isolated = false; break; } } if (!isolated) break; }