#include int main(){ using namespace std; unsigned long N; cin >> N; vector> edges(N); for(unsigned long i{1}, a, b; i < N; ++i){ cin >> a >> b; edges[--a].emplace_back(--b); edges[b].emplace_back(a); } vector ans(N); unsigned long offset{}; [dfs_impl{[&edges, &ans, &offset](auto&& f, unsigned long now, unsigned long prev, unsigned long val) -> void { ans[now] = val; for(const auto& next : edges[now])if(next != prev){ if(next < now){ ++offset; f(f, next, now, val - 1); }else f(f, next, now, val + 1); } }}]{dfs_impl(dfs_impl, 0, 0, 0);}(); for(const auto& i : ans)cout << i + offset << endl; return 0; }