#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; vector > edges; vector ans; int solve(int curr, int prev, int dist) { int tmp = INT_MAX; for(int next : edges[curr]){ if(next != prev) tmp = min(tmp, solve(next, curr, dist + 1)); } if(tmp < INT_MAX){ ans[curr] = min(dist, tmp); return tmp + 1; } else{ ans[curr] = 0; return 1; } } int main() { int n; cin >> n; edges.assign(n, vector()); for(int i=0; i> x >> y; -- x; -- y; edges[x].push_back(y); edges[y].push_back(x); } ans.resize(n); solve(0, -1, 0); for(int i=0; i