fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. using namespace std;
  5.  
  6. vector<int> Map[200001];
  7. int dist[200001];
  8.  
  9. void dfs(int node,int parent)
  10. {
  11. for(int i=0;i<Map[node].size();i++)
  12. {
  13. if(parent != Map[node][i])
  14. {
  15. dist[Map[node][i]] = 1+dist[node];
  16. dfs(Map[node][i],node);
  17. }
  18. }
  19. }
  20.  
  21.  
  22. int main() {
  23.  
  24. int n;
  25. cin>>n;
  26.  
  27. for(int i=0;i<n-1;i++)
  28. {
  29. int a,b;
  30. cin>>a>>b;
  31.  
  32. Map[a-1].push_back(b-1);
  33. Map[b-1].push_back(a-1);
  34. }
  35.  
  36. dist[0]=0;
  37. dfs(0,-1);
  38.  
  39. int maxDist =0;
  40. int node=0;
  41. for(int i=0;i<n;i++)
  42. {
  43. if(dist[i] > maxDist)
  44. {
  45. maxDist = dist[i];
  46. node=i;
  47. }
  48. }
  49.  
  50. for(int i=0;i<n;i++)
  51. {
  52. dist[i]=0;
  53. }
  54. dfs(node,-1);
  55.  
  56. maxDist=0;
  57. for(int i=0;i<n;i++)
  58. {
  59. maxDist = max(maxDist,dist[i]);
  60. }
  61.  
  62. cout<<maxDist<<endl;
  63.  
  64. return 0;
  65. }
Success #stdin #stdout 0.01s 8252KB
stdin
5
1 2
1 3
3 4
3 5
stdout
3