fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long height[500000 + 5];
  5.  
  6. void DFS(long long node, vector<long long> G[], long long used[], long long parent[]) {
  7. used[node] = 1;
  8.  
  9. for (long long neighbour : G[node]) {
  10. if (used[neighbour] == 0) {
  11. parent[neighbour] = node;
  12. DFS(neighbour, G, used, parent);
  13. }
  14. }
  15.  
  16. long long h = 0;
  17.  
  18. for (long long child : G[node]) {
  19. if (child != parent[node]) {
  20. h = max(h, height[child]);
  21. }
  22. }
  23.  
  24. height[node] = h + 1;
  25. }
  26.  
  27. int main() {
  28. long long n;
  29. cin >> n;
  30.  
  31. vector<long long> G[n + 1];
  32.  
  33. for (long long i = 1; i <= n - 1; i++) {
  34. long long u, v;
  35. cin >> u >> v;
  36.  
  37. G[u].push_back(v);
  38. G[v].push_back(u);
  39. }
  40.  
  41. long long used[n + 1] = {};
  42. long long parent[n + 1] = {};
  43.  
  44. DFS(1, G, used, parent);
  45.  
  46. for (long long i = 1; i <= n; i++) {
  47. cout << height[i] << '\n';
  48. }
  49.  
  50. return 0;
  51. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
1