fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
  4. #define Bit(mask , i) ((mask >> i) & 1)
  5. #define fi first
  6. #define se second
  7. #define _LOG2(nl) 31 - __builtin_clz(nl)
  8. #define c_bit(nl) __builtin_popcount(nl)
  9. #define ii pair<long long , int>
  10. #define lll pair<long long , pair<long long , long long>>
  11. #define lii pair<long long , pair<long long , int>>
  12. #define iii pair<int , pair<int , int>>
  13. #define iiii pair<pair<int , int> , pair<int , int>>
  14. #define llll pair<pair<__int128 , __int128> , pair<__int128 , __int128>>
  15. #define li pair<long long , int>
  16. #define db long double
  17. #define onBit(mask , i) (mask | (1 << i))
  18. #define offBit(mask , i) (mask & (~(1 << i)))
  19.  
  20. const long long INF = 1e16;
  21. const int N = 2e5 + 7;
  22. int max1[N] , max2[N] , n;
  23. vector<int> a[N];
  24.  
  25. void dfs(int u , int p){
  26. for (int v : a[u]) if (v != p){
  27. dfs(v , u);
  28.  
  29. max2[u] = max(max2[u] , max1[v] + 1);
  30. if (max2[u] > max1[u]) swap(max1[u] , max2[u]);
  31. }
  32. }
  33.  
  34. void inp(){
  35. cin >> n;
  36.  
  37. for (int i = 1 ; i < n ; ++i){
  38. int u , v;
  39. cin >> u >> v;
  40. a[u].push_back(v);
  41. a[v].push_back(u);
  42. }
  43.  
  44. dfs(1 , 0);
  45. }
  46.  
  47. void dfs_reroot(int u , int p){
  48. for (int v : a[u]) if (v != p){
  49. if (max1[v] + 1 == max1[u]) max2[v] = max(max2[v] , max2[u] + 1);
  50. else max2[v] = max(max2[v] , max1[u] + 1);
  51.  
  52. if (max2[v] > max1[v]) swap(max1[v] , max2[v]);
  53. dfs_reroot(v , u);
  54. }
  55. }
  56.  
  57. void solve(){
  58. dfs_reroot(1 , 0);
  59.  
  60. for (int i = 1 ; i <= n ; ++i){
  61. cout << max1[i] << " ";
  62. }
  63. }
  64.  
  65. int main(){
  66. // freopen("difmax.inp" , "r" , stdin);
  67. // freopen("difmax.out" , "w" , stdout);
  68. faster;
  69. inp();
  70. solve();
  71. return 0;
  72. }
  73.  
Success #stdin #stdout 0.01s 8244KB
stdin
Standard input is empty
stdout
Standard output is empty