题目链接:http://codeforces.com/contest/787/problem/B
题意:关键就是题意,读懂了发现就是水题,就是说n个国家,每个国家有一个忠臣和一个奸细,现在把n个国家的人分成m堆来开会,问有没有可能某一堆里面的人全部是奸细,如果是就GG了,这个时候输出”YES”,否则输出”NO”。
解法:直接按照题意模拟一下即可。复杂度O((n+m)*logn),因为我用的set判断。
//CF 787B
#include <bits/stdc++.h>
using namespace std;
set <int> s;
int main()
{
int n, m, k, x;
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; i++){
bool flag2 = 1;
scanf("%d", &k);
s.clear();
for(int j = 1; j <= k; j++){
scanf("%d", &x);
if(s.count(-x)){
flag2 = 0;
}
s.insert(x);
}
if(flag2){
puts("YES");
return 0;
}
}
puts("NO");
return 0;
}