代码
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N = 100010;
vector<int>v[N];
vector<int>path;
int ans = 0, id = 0;
void dfs(int u){
if(path.size() > ans){
int sz =path.size();
id = path[sz - 1];
ans = sz;
}
for(int i = 0; i < v[u].size(); i++){
path.push_back(v[u][i]);
dfs(v[u][i]);
path.pop_back();
}
}
int main(){
int n; cin >> n;
int s = (n + 1) * n / 2; //因为每条路对应的门的编号都不重复,所以可以用数字的和减去出现的数字,剩下的就是入口
for(int i = 1; i <= n; i++){
int k; cin >> k;
int x;
for(int j = 1;j <= k; j++){
cin >>x;
v[i].push_back(x);
s -= x;//找入口
}
}
path.push_back(s);
dfs(s);
cout << id;
}