这道题一般都是bfs,但是dfs也可以做,只需找到源头,在处理时,不用用栈;用记录就好;在这里 因为d,所以进行了
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> s;
int v[100005];
int D=0,ans=0;
void dfs(int dep,int d){
if(!s[dep].size()){
if(d>D){ D=d;
ans=dep+1;
}
return ;
}
for(int i=0;i<s[dep].size();i++){
dfs(s[dep][i]-1,d+1);
}
}
int main()
{
int n;
cin>>n;
int k,m;
for(int i=1;i<=n;i++){
cin>>k;vector<int>a;
for(int j=1;j<=k;j++){
cin>>m; a.push_back(m);
v[m]=1;
}
s.push_back(a);
}
for(int i=0;i<n;i++){
if(!v[i+1]) dfs(i,0);
}
if(ans)
cout<<ans<<endl;
else cout<<1<<endl;
return 0;
}