题目链接: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");
}
}
京公网安备 11010502036488号