fork download
  1.  
  2.  
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5. #define MAX 100009
  6. bool check[MAX]={false};
  7. int total=0;
  8. int dfs(vector<int> v[],int root)
  9. {
  10. int m,m1=-1,m2=-1;
  11. check[root]=1;
  12. for(int i=0;i<v[root].size();i++)
  13. {
  14. if(!check[v[root][i]]){
  15. m = dfs(v,v[root][i]);
  16. if(m>=m1)
  17. {
  18. m2= m1;
  19. m1 = m;
  20. }
  21. else if(m>m2)
  22. m2=m;
  23. }
  24. }
  25. total = max(total , m1+m2+2);
  26. return (m1 + 1);
  27. }
  28. int main()
  29. {
  30. int n,a,b;
  31. cin>>n;
  32. vector<int> v[n+9];
  33. for(int i=0;i<n-1;i++){
  34. scanf("%d%d",&a,&b);
  35. v[a].push_back(b);
  36. v[b].push_back(a);
  37. }
  38. dfs(v,1);
  39. cout<<total<<endl;
  40. }
  41.  
Success #stdin #stdout 0s 4176KB
stdin
15
14 11
11 4
14 6
11 12
11 2
12 1
1 7
14 8
14 10
11 3
6 9
3 5
9 13
7 15
stdout
8