Submission #42606

#TimeUsernameProblemLanguageResultExecution timeMemory
42606MatheusLealVBirokracija (COCI18_birokracija)C++14
100 / 100
131 ms34872 KiB
#include <bits/stdc++.h> #define N 200005 using namespace std; typedef long long ll; int n, ini[N], fim[N], tempo; ll sum[N], qtd[N], deep[N]; vector<int> grafo[N]; void dfs(int x, int p, ll d) { ini[x] = ++tempo; deep[x] = d, sum[ini[x]] += d, qtd[ini[x]] ++; for(auto v: grafo[x]) { if(v == p) continue; dfs(v, x, d + 1); } fim[x] = tempo; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i = 2, a; i <= n; i++) { cin>>a; grafo[i].push_back(a); grafo[a].push_back(i); } dfs(1, 1, 1LL); for(int i = 1; i <= n; i++) sum[i] += sum[i - 1], qtd[i] += qtd[i - 1]; for(int x = 1; x <= n; x++) cout<<(ll)(sum[fim[x]] - sum[ini[x] - 1] - (deep[x] - 1)*(qtd[fim[x]] - qtd[ini[x] - 1]))<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...