#include <bits/stdc++.h>
using namespace std;
vector<int> st[111111];
int ans;
int deep = -1;
int f[111111];
void init()
{
for (int i = 0; i < 11111; i++)
{
f[i] = i;
}
}
int find(int x)
{
return x == f[x] ? x : f[x] = find(f[x]);
}
void merge(int x, int y)
{
int nx = find(x);
int ny = find(y);
if (nx != ny)
{
f[nx] = ny;
}
}
void dfs(int x, int nowdeep)
{
if (nowdeep > deep)
{
deep = nowdeep;
}
if (nowdeep == deep)
{
ans = x;
}
for (int i = 0; i < st[x].size(); i++)
{
dfs(st[x][i], nowdeep + 1);
}
}
int main()
{
int n, k, x, pos;
cin >> n;
init();
for (int i = 1; i <= n; i++)
{
cin >> k;
for (int j = 1; j <= k; j++)
{
cin >> x;
st[i].push_back(x);
merge(x,i);
}
}
for (int i = 1; i <= n; i++)
{
if (f[i] == i)
{
pos = i;
break;
}
}
dfs(pos, 1);
cout << ans;
}
L2-031 深入虎穴 (25 分)
最新推荐文章于 2022-10-25 20:50:24 发布