题目链接: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;
}