题目:
思路分析:
注意一下起点不是1(第一次误认为起点是1 只拿了18分憨憨了!)
广搜和深搜都行!
代码实现:
const int MAX=1000010;
vector<int >v[MAX];
int vis[MAX];
int ans;
int ans1;
void dfs(int pos,int cnt){
if(cnt>ans){
ans=cnt;
ans1=pos;
}
for(int i=0;i<v[pos].size();i++){
dfs(v[pos][i],cnt+1);
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
int k;
cin>>k;
while (k--) {
int x;
cin>>x;
vis[x]=1;
v[i].push_back(x);
}
}
int f;
for(int i=1;i<=n;i++){
if(!vis[i])
f=i;
}
dfs(f,1);
cout<<ans1<<endl;
}