CSES - Shared codeLink to this code:
https://cses.fi/paste/cd99ccea8872369120219b/
#include<bits/stdc++.h>
#define REP(i,n) for (int i = 1; i <= n; i++)
#define mod 1000000007
#define pb push_back
#define ff first
#define ss second
#define ii pair<int,int>
#define vi vector<int>
#define vii vector<ii>
#define lli long long int
#define INF 1000000000
#define endl '\n'
const double PI = 3.141592653589793238460;
typedef std::complex<double> Complex;
typedef std::valarray<Complex> CArray;
using namespace std;
vi ar[200001];
lli res[200001];
int subSize[200001];
lli subDist[200001];
int n;
void dfs1(int node , int par)
{
subSize[node] = 1;
for(int child : ar[node])
if(child != par)
{
dfs1(child , node);
subSize[node] += subSize[child];
subDist[node] += subSize[child] + subDist[child];
}
}
void dfs(int node , int par)
{
res[node] = res[par] - subSize[node] - subDist[node] + n - subSize[node] + subDist[node];
for(int child : ar[node])
if(child != par)
dfs(child , node);
}
int main()
{
int a , b;
cin>>n;
REP(i , n-1) cin>>a>>b , ar[a].pb(b) , ar[b].pb(a);
dfs1(1 , -1);
res[1] = subDist[1];
for(int child : ar[1])
dfs(child , 1);
REP(i , n) cout<<res[i]<<" ";
}