用bfs遍历层数就行了;
坑点:1号不一定是起点!!只有入度为0的点才是起点
//1号不一定是起点!!只有入度为0的点才可能是起点
#include<bits/stdc++.h>
using namespace std;
#define N 100010
int e[N],ne[N],idx,h[N],in[N];
void add(int l,int r)
{
e[idx]=r,ne[idx]=h[l],h[l]=idx++;
}
int bfs(int t)
{
queue<int> q;
q.push(t);
while(q.size())
{
int t=q.front();
q.pop();
for(int i=h[t];i!=-1;i=ne[i])
{
int j=e[i];
q.push(j);
}
if(!q.size())
return t;
}
}
int main()
{
int n;
memset(h,-1,sizeof h);
cin>>n;
for(int i=1; i<=n; i++)
{
int k;
cin>>k;
while(k--)
{
int x;
cin>>x;
add(i,x);
in[x]++;
}
}
int t;
for(int i=1;i<=n;i++)
if(!in[i])
{
t=i;
break;
}
cout<< bfs(t);
}