题解
又是这种数据处理的题目 |
---|
首先考虑数据结构 |
不相容的管理必须要存 |
还要保证后面判断的时候容易,可以很快的判断 |
map<int,set < int > > |
加入a,b不相容 |
把所有和a不相容的加到map[a]的容器中,这样查询的时候,直接一个count |
b也是一样,一样要把a加进去 |
Code
#include <iostream>
#include <map>
#include <set>
using namespace std;
int main()
{
int N, M;
cin >> N >> M;
map<int, set<int>> rap;
while (N--)
{
int x, y;
cin >> x >> y;
rap[x].insert(y);
rap[y].insert(x);
}
while (M--)
{
int k;
int x;
cin >> k;
set<int> t;
int f = 0;
for (int i = 0; i < k; i++)
{
cin >> x;
t.insert(x);
for (auto e : rap[x])
{
if (t.count(e) && f !=1)
{
f = 1;
cout << "No\n";
break;
}
}
}
if (!f)
cout << "Yes\n";
}
return 0;
}