PTA 天梯赛 L2-025分而治之
结构体保存每条边的两个端点,用set保存需要攻打的城市,然后记录需要攻打的城市一共占了多少条边,若等于m,则认为所有点都孤立了
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
struct node {
int x; int y;
};
const int N = 1e5 + 7;
node ma[N];
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= m; i++) {
cin >> ma[i].x >> ma[i].y;
}
int q;
cin >> q;
while (q--) {
int cnt = m;
set<int>x;
int t;
cin >> t;
while (t--) {
int tmp;
cin >> tmp;
x.insert(tmp);
}
for (int i = 1; i <= m; i++) {
if (x.count(ma[i].x) || x.count(ma[i].y))cnt--;
}
if (cnt == 0)cout << "YES" << '\n';
else cout << "NO" << '\n';
}
}