Submission #33811725


Source Code Expand

#include <bits/stdc++.h>
#define all(a) a.begin(), a.end()
#define put(i) cout << i << endl
#define rep(i, s, n) for(long long i = s; i < (long long)(n); i++)
using namespace std;
using ll = long long;

struct UnionFind {
    vector<int> r;

    UnionFind(int N) { r = vector<int>(N + 1, -1); }

    int root(int x) {
        if(r[x] < 0) return x;
        return r[x] = root(r[x]);
    }

    bool unite(int x, int y) {
        x = root(x);
        y = root(y);
        if(x == y) return false;
        if(r[x] > r[y]) swap(x, y);
        r[x] += r[y];
        r[y] = x;
        return true;
    }

    int size(int x) { return -r[root(x)]; }
};

int main() {
    ll n;
    cin >> n;
    vector<ll> p(n - 1);
    rep(i, 0, n - 1) cin >> p[i];

    ll ans = 0;
    ll top;
    ll idx = n;
    for(;;) {
        top = p[idx-2];
        ans++;
        if(top == 1) {
            put(ans);
            return 0;
        }
        idx = top;
    }
}

Submission Info

Submission Time
Task B - Ancestor
User aoken_7
Language C++ (GCC 9.2.1)
Score 200
Code Size 946 Byte
Status AC
Exec Time 5 ms
Memory 3544 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 200 / 200
Status
AC × 2
AC × 16
Set Name Test Cases
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt
Case Name Status Exec Time Memory
example_00.txt AC 5 ms 3436 KiB
example_01.txt AC 2 ms 3480 KiB
test_00.txt AC 2 ms 3544 KiB
test_01.txt AC 2 ms 3400 KiB
test_02.txt AC 2 ms 3440 KiB
test_03.txt AC 1 ms 3364 KiB
test_04.txt AC 2 ms 3444 KiB
test_05.txt AC 2 ms 3540 KiB
test_06.txt AC 2 ms 3440 KiB
test_07.txt AC 2 ms 3492 KiB
test_08.txt AC 2 ms 3488 KiB
test_09.txt AC 2 ms 3496 KiB
test_10.txt AC 2 ms 3496 KiB
test_11.txt AC 2 ms 3524 KiB
test_12.txt AC 2 ms 3484 KiB
test_13.txt AC 2 ms 3496 KiB