有一个测试点,就是maxx必须赋值小于0,如果0的话马,会有个返回不了,造成错误,所以赋值为-1就可以了
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define sz(x) (int)x.size()
//2025.3.18
//注意maxx赋值为-1
int maxx=-1;
int ans=0;
map<int,int>idx;
vi arr[100100];
void dfs(int x,int cnt){
if(sz(arr[x])==0){
if(cnt>maxx){maxx=cnt;ans=x;}
return ;
}
for(int i=0;i<sz(arr[x]);i++)dfs(arr[x][i],cnt+1);
return ;
}
void solve(){
int n;cin>>n;
int m=0;
for(int i=1;i<=n;i++){
cin>>m;int x;
for(int j=0;j<m;j++){
cin>>x;arr[i].push_back(x);
idx[x]=1;
}
}
int root;
for(int i=1;i<=n;i++){
if(!idx[i])root=i;
}dfs(root,0);
cout<<ans;
}
signed main()
{
solve();
return 0;
}