#include <bits/stdc++.h>
using namespace std;
template <typename T>
void read(T &x) {
  x = 0;
  char ch = getchar();
  long long f = 1;
  while (!isdigit(ch)) {
    if (ch == '-') f *= -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - 48;
    ch = getchar();
  }
  x *= f;
}
template <typename T, typename... Args>
void read(T &first, Args &...args) {
  read(first);
  read(args...);
}
template <typename T>
void write(T arg) {
  T x = arg;
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x > 9) {
    write(x / 10);
  }
  putchar(x % 10 + '0');
}
template <typename T, typename... Ts>
void write(T arg, Ts... args) {
  write(arg);
  if (sizeof...(args) != 0) {
    putchar(' ');
    write(args...);
  }
}
using namespace std;
const int N = 1e6 + 5;
int head[N], cnt, n;
struct node {
  int next, t, w;
} edge[2 * N];
void add(int f, int t, int w) {
  edge[cnt].w = w;
  edge[cnt].t = t;
  edge[cnt].next = head[f];
  head[f] = cnt++;
}
int h[N], son[N];
int *dp[N], temp[N], *cur = temp;
int ans[N];
void dfs1(int u, int fa) {
  h[u] = 1;
  for (int i = head[u]; i != -1; i = edge[i].next) {
    int v = edge[i].t;
    if (v != fa) {
      dfs1(v, u);
      h[u] = max(h[u], h[v] + 1);
      if (h[v] > h[son[u]]) son[u] = v;
    }
  }
}
void dfs2(int u, int fa) {
  dp[u][0] = 1;
  if (son[u]) {
    dp[son[u]] = dp[u] + 1;
    dfs2(son[u], u);
    ans[u] = ans[son[u]] + 1;
  }
  for (int i = head[u]; i != -1; i = edge[i].next) {
    int v = edge[i].t;
    if (v != son[u] && v != fa) {
      dp[v] = cur, cur += h[v];
      dfs2(v, u);
      for (int j = 1; j <= h[v]; j++) {
        dp[u][j] += dp[v][j - 1];
        if (dp[u][j] > dp[u][ans[u]] ||
            (dp[u][j] == dp[u][ans[u]] && j < ans[u]))
          ans[u] = j;
      }
    }
  }
  if (dp[u][ans[u]] == 1) ans[u] = 0;
}
int main() {
  read(n);
  memset(head, -1, sizeof(head));
  for (int i = 1; i < n; i++) {
    int u, v;
    read(u, v);
    add(u, v, 1);
    add(v, u, 1);
  }
  dfs1(1, 1);
  dp[1] = cur, cur += h[1];
  dfs2(1, 1);
  for (int i = 1; i <= n; i++) write(ans[i]), putchar('\n');
}
