就是求所有树最高的那棵树的高度
vi adj[M];
vi ind;
vi rt;
vi h;
int ans = 0;
void dfs(int u)
{
for (int v : adj[u])
{
h[v] = h[u] + 1;
dfs(v);
}
}
void solve()
{
cin >> n;
ind.resize(n + 1, 0);
h.resize(n + 1, 0);
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
if (x != -1)
{
adj[x].push_back(i);
ind[i]++;
}
}
for (int i = 1; i <= n; i++)
{
if (ind[i] == 0)
{
rt.push_back(i);
}
}
for (int i : rt)
{
h[i] = 1;
dfs(i);
}
for (int i = 1; i <= n; i++)
{
ans = max(ans, h[i]);
}
cout << ans << endl;
}

京公网安备 11010502036488号