#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; class Inquisitive { public: void solve(void) { int N; cin>>N; vector> tree(N); REP(i,N-1) { int x, y; cin>>x>>y; --x, --y; tree[x].push_back(y); tree[y].push_back(x); } const int inf = (1<<30); vector dist(N,inf); queue Q; Q.push(0); REP(i,N) { if (tree[i].size() == 1) { // 葉自身は葉までの距離 0 dist[i] = 0; Q.push(i); } } dist[0] = 0; // 根自身までは距離 0 // わかっていないのは幹だけ。よって根と葉から bfs すればよい while (!Q.empty()) { int u = Q.front(); Q.pop(); for (auto to : tree[u]) { if (dist[to] > dist[u] + 1) { dist[to] = dist[u]+1; Q.push(to); } } } REP(i,N) cout<solve(); delete obj; return 0; } #endif