测试点1(1分) 深度为0时的特判,需要将起始深度设为-1
#include <bits/stdc++.h>
using namespace std;
vector<int> e[100010];
int book[100010];
int n;
int maxdepth,index1;
void dfs(int u,int depth){
if(depth>maxdepth){
maxdepth=depth;
index1=u;
}
if(e[u].size()==0)
return ;
for(int i=0;i<(int)e[u].size();i++){
int v=e[u][i];
dfs(v,depth+1);
}
}
int main(){
scanf("%d",&n);
int k,d;
memset(book,false,sizeof(book));
for(int i=0;i<n;i++){
scanf("%d",&k);
while(k--){
scanf("%d",&d);
book[d]=true;
e[i+1].push_back(d);
}
}
int sign;
for(int i=1;i<=n;i++){
if(book[i]==0){
sign=i; //找到入口
break;
}
}
maxdepth=-1;///测试点1,1分
index1=0;
dfs(sign,0);
printf("%d\n",index1);
return 0;
}