Submission #42604

#TimeUsernameProblemLanguageResultExecution timeMemory
42604MatheusLealVBirokracija (COCI18_birokracija)C++14
70 / 100
138 ms24388 KiB
#include <bits/stdc++.h> #define N 200005 using namespace std; typedef long long ll; int n, ini[N], fim[N], tempo, deep[N], qtd[N]; ll sum[N]; vector<int> grafo[N]; void dfs(int x, int p, int 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, 1); for(int i = 1; i <= 2*n; i++) sum[i] += sum[i - 1], qtd[i] += qtd[i - 1]; for(int x = 1; x <= n; x++) cout<<sum[fim[x]] - sum[ini[x] - 1] - (ll)(deep[x] - 1)*(ll)(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...