fork download
  1. #include <bits/stdc++.h>
  2. #include <iomanip>
  3. #include <ext/pb_ds/assoc_container.hpp>
  4. #include <ext/pb_ds/tree_policy.hpp>
  5. using namespace __gnu_pbds;
  6. #define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
  7. using namespace std;
  8. #define ll long long
  9. #define pb push_back
  10. #define all(a) a.begin(),a.end()
  11. #define death ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  12.  
  13. ////////////////////////////////////global variables//////////////////////////////////////////////////
  14. map<int ,vector<int>> adj;
  15. map<int, bool> vis;
  16. map<int, int> level;
  17. int farLeaf,farlevel;
  18. int maxdis=-1;
  19. ////////////////////////////////////recursion/////////////////////////////////////////////////////////
  20.  
  21. /////////////////////////////////////functions///////////////////////////////////////////////////////
  22. bool isLeaf(int node) {
  23. return adj[node].size() == 1;
  24. }
  25. void dfs(ll num,int dis){
  26. //*if (isLeaf(num) && num != 1) return 1;*//*
  27. if(isLeaf(num)) {
  28. if (maxdis < dis) {
  29. maxdis = dis;
  30. farLeaf=num;
  31. farlevel=level[num];
  32. }
  33. }
  34. vis[num] = true;
  35. for (int i = 0; i < adj[num].size(); i++) {
  36. int ch = adj[num][i];
  37. if (!vis[ch]) {
  38. dfs(ch,dis+1);
  39. level[ch] = level[num] + 1;
  40. }
  41. }
  42.  
  43. }
  44. /////////////////////////////////////////////////////////////////////////////////////////////////////
  45.  
  46. void neverland() {
  47. int n; cin>>n;
  48. vis.clear();
  49.  
  50. for (int i=1;i<n;i++)
  51. {
  52. int x,y;
  53. cin>>x>>y;
  54. adj[x].pb(y);
  55. adj[y].pb(x);
  56. }
  57. dfs(1,0);
  58. int far=maxdis;
  59. vis.clear();
  60. dfs(far,0);
  61. cout<<maxdis<<endl;
  62. }
  63. int main() {
  64. death;
  65. long long t=1;
  66. // cin>>t;
  67. while(t--){
  68. neverland();
  69. }
  70. }
Success #stdin #stdout 0s 5288KB
stdin
3
1 2
2 3

stdout
2