题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=890&pid=1003
解题思路:
暴力,map<node, vector<int> >
map第一维是记录时间地点,第二维记录在这个时间地点有哪些元素。如果被感染就标记一下。
代码:</int>

#include<bits/stdc++.h>
using namespace std;
const int N = 2e4+7;
struct node{
    int t, p;
    bool operator < (const node &a) const {
        if(t == a.t) return p < a.p;
        return t < a.t;
    }
};
map<node , vector<int> > mp;
bool vis[N];
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        mp.clear();
        memset(vis, 0, sizeof(vis));
        int n;    scanf("%d",&n);
        for(int i = 1; i <= n; i++) {
            int a;
            scanf("%d",&a);
            for(int j = 1; j <= a; j++) {
                int t, p;    scanf("%d%d",&t,&p);
                mp[{t,p}].push_back(i);
            }
        }
        vis[1] = 1;
        for(auto it = mp.begin(); it != mp.end(); it++) {
            int siz = it->second.size();
            for(int i = 0; i < siz; i++) {
                if(vis[it->second[i]]) {
                    for(int j = 0; j < siz; j++) {
                        vis[it->second[j]]=1;
                    }
                    break;
                }
            }
        }
        for(int i = 1; i <= n; i++) {
            if(vis[i]) printf("%d ",i);
        }
        printf("\n");
    }
}