Pagini recente » Cod sursa (job #2414675) | Cod sursa (job #393234) | Cod sursa (job #3133440) | Solutii preONI 2007, Runda 1 | Cod sursa (job #2808112)
#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;
}