#include #include #include #include //#include #include #include #include #include #include //#include #include #include #include //#include #include #include //#include #include #include #include #include const int dx[] = {1, 0, -1, 0}; const int dy[] = {0, 1, 0, -1}; using namespace std; typedef long long ll; typedef vector vi; typedef vector vll; typedef pair pii; const int MAXN = 100010; vector G[MAXN]; int dp[MAXN], d[MAXN]; void dfs(int v, int p, int depth) { d[v] = depth; dp[v] = MAXN; bool leaf = true; for (int ch : G[v]) { if (ch == p) continue; leaf = false; dfs(ch, v, depth+1); dp[v] = min(dp[v], dp[ch]+1); } if (leaf) dp[v] = 0; } int main() { cin.tie(0); ios::sync_with_stdio(false); int N; cin >> N; for (int i = 0; i < N-1; i++) { int x, y; cin >> x >> y; G[x].push_back(y); G[y].push_back(x); } dfs(1, 0, 0); for (int i = 1; i <= N; i++) { cout << min(d[i], dp[i]) << endl; } return 0; }