fork download
  1. # include <iostream>
  2. # include <vector>
  3. # define pb push_back
  4. using namespace std;
  5.  
  6. vector < vector<int> > graph(10001,vector<int>());
  7. int visited[10001];
  8. int total[10001];
  9. int max1,index;
  10. void addEdge(int node1,int node2){
  11. graph[node1].pb(node2);
  12. graph[node2].pb(node1);
  13. total[node1]++;
  14. total[node2]++;
  15. }
  16. void dfs(int k,int len){
  17. if(len>max1){
  18. max1=len;
  19. index=k;
  20. }
  21. visited[k]=1;
  22. for(int i=0;i<graph[k].size();i++){
  23. if(visited[graph[k][i]]==0){
  24. dfs(graph[k][i],len+1);
  25. }
  26. }
  27. }
  28. int main(){
  29. int n;
  30. cin>>n;
  31. for(int i=1;i<=10000;i++){
  32. visited[i]=0;
  33. total[i]=0;
  34. }
  35. max1=-1;
  36. int u,v;
  37. for(int i=1;i<=n;i++){
  38. //addEdge()
  39. cin>>u>>v;
  40. addEdge(u,v);
  41. }
  42. int i;
  43. for(i=1;i<=10000;i++){
  44. if(total[i]==1)
  45. break;
  46. }
  47. dfs(i,0);
  48. for(int i=1;i<=10000;i++){
  49. visited[i]=0;
  50. //count[i]=0;
  51. }
  52. int ans=max1;
  53. max1=-1;
  54. dfs(index,0);
  55. if(max1>ans)
  56. cout<<max1<<endl;
  57. else
  58. cout<<ans<<endl;
  59. return 0;
  60. }
  61.  
Success #stdin #stdout 0s 3556KB
stdin
3
1 2
2 3
stdout
2