#include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll maxn = 1e6 + 7; int T, n, vis[maxn], m,mp[107][17]; vector< int > vec[107][17]; struct node{ int t, pos, id; } e[maxn]; bool cmp(node a, node b){ if(a.t==b.t) return a.pos vec[107][17]; for (int i = 1; i <= n; i++){ scanf("%d", &m); for (int j = 0, u, v; j < m; j++){ scanf("%d%d", &u, &v); if(i==1) mp[u][v]=1; e[k].t = u, e[k].pos = v, e[k++].id = i; } } vis[1]=1; sort(e, e + k, cmp); for (int i = 0; i < k; i++){ int t=e[i].t,pos=e[i].pos,id=e[i].id; if(vis[id]==0) vec[t][pos].push_back(i); if(vis[id]==1){ for(auto x: vec[t][pos]){ int tt=e[x].t,poss=e[x].pos,idd=e[x].id; vis[idd]=1; mp[tt][poss]=1; } mp[t][pos]=1; } if(mp[t][pos]==1){ vis[id]=1; } } vector ans; for(int i=1;i<=n;i++){ if(vis[i]) ans.push_back(i); } for(int i=0;i<(int)ans.size()-1;i++){ printf ("%d ",ans[i]); } printf ("%d\n",ans[(int)ans.size()-1]); // printf ("\n"); } }