Cod sursa(job #2808112)

Utilizator vladsipunct5555Butnrau Vlad vladsipunct5555 Data 24 noiembrie 2021 16:43:24
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <vector>
using namespace std;
vector<int> v[200001];
int viz[200001], suma[200001], noduri[200001];
void dfs(int nod, int tata)
{
    if (viz[nod] == 1)
        return;
    viz[nod] = 1;
    if (v[nod].size() == 1)
        suma[nod] = 0, noduri[nod] = 1;
    else
    {
        for (auto vecin : v[nod])
            if (vecin != tata)
            {
                dfs(vecin, nod);
                noduri[nod] += noduri[vecin];
                suma[nod] += suma[vecin] + noduri[vecin];
            }
        noduri[nod]++;
    }
}
int main()
{
    int n;
    cin >> n;
    for (int i = 1; i < n; ++i)
    {
        int a, b;
        cin >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs(1, 0);
    cout << suma[1] << ' ';
    for (int i = 2; i <= n; ++i)
        cout << suma[1] + suma[i] + 1 - noduri[i] << ' ';
    cout << '\n';
    return 0;
}