115A

C++ implementation © 2026 Pedro Luis D.

View on Codeforces Logo
115A.cpp
// https://codeforces.com/problemset/problem/115/A
#include 
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector parent(n + 1, -1);
    vector memo(n + 1, -1);

    for (int i = 1; i <= n; i++)
    {
        cin >> parent[i];
    }

    int ans = 0;

    auto countparent = [&](auto self, int p) -> int
    {
        if (parent[p] == -1)
        {
            return 0;
        }
        if (memo[p] == -1)
        {
            memo[p] = self(self, parent[p]) + 1;
        }

        return memo[p];
    };

    for (int e = 0; e <= n; e++)
    {

        ans = max(ans, countparent(countparent, e));
    }

    cout << ans + 1 << "\n";

    return 0;
}