7334 2024. 01. 07 18:52:15 anon Színes fa cpp17 Elfogadva 50/50 150ms 87088 KiB
#include <bits/stdc++.h>
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
using namespace std;
typedef long long ll;
const ll INF = (1LL << 62);
ll dfs(ll vertex, ll depth, ll &ans1, vector<vector<ll>> &ds, const vector<vector<ll>> &tree) {
    ll cc;
    cc = 1;
    ds[depth].push_back(vertex);
    for(const auto &x : tree[vertex])
        cc += dfs(x, depth + 1, ans1, ds, tree);
    ans1 = min(ans1, depth + cc);
    return cc;
}
int main() {
    FastIO;
    ll i, v, ans1, N;
    cin >> N;
    vector<vector<ll>> tree(N + 1);
    for(i = 2; i <= N; i++) {
        cin >> v;
        tree[v].push_back(i);
    }
    ans1 = INF;
    vector<vector<ll>> ds(N);
    dfs(1, 0, ans1, ds, tree);
    vector<ll> ans2(N + 1);
    for(i = 0; i < N; i++) {
        for(const auto &x : ds[i])
            ans2[x] = max(ans1 - i, 1LL);
    }
    cout << ans1 << '\n';
    for(i = 1; i <= N; i++)
        cout << ans2[i] << ' ';
    cout << '\n';
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1820 KiB
2 Elfogadva 0/0 6ms 3936 KiB
3 Elfogadva 1/1 3ms 2268 KiB
4 Elfogadva 4/4 3ms 2484 KiB
5 Elfogadva 5/5 105ms 87088 KiB
6 Elfogadva 2/2 111ms 37964 KiB
7 Elfogadva 3/3 108ms 38244 KiB
8 Elfogadva 2/2 108ms 37276 KiB
9 Elfogadva 2/2 89ms 36456 KiB
10 Elfogadva 2/2 87ms 37240 KiB
11 Elfogadva 2/2 104ms 39364 KiB
12 Elfogadva 2/2 98ms 40440 KiB
13 Elfogadva 2/2 116ms 41056 KiB
14 Elfogadva 2/2 104ms 41476 KiB
15 Elfogadva 2/2 104ms 42300 KiB
16 Elfogadva 2/2 114ms 42432 KiB
17 Elfogadva 2/2 104ms 42740 KiB
18 Elfogadva 2/2 104ms 43176 KiB
19 Elfogadva 2/2 104ms 43128 KiB
20 Elfogadva 2/2 122ms 43552 KiB
21 Elfogadva 2/2 123ms 44108 KiB
22 Elfogadva 2/2 150ms 45172 KiB
23 Elfogadva 2/2 128ms 53636 KiB
24 Elfogadva 3/3 150ms 64012 KiB