Advertisement
tepyotin2

DiamterOfTree

May 18th, 2025
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. struct Node{
  6.     vector<int> links;
  7.     int depth;
  8. };
  9.  
  10. int n;
  11. vector<Node> tree;
  12. vector<bool> visited;
  13. int mxd;
  14. int mxn;
  15.  
  16. void findDepth(int node){
  17.     visited[node] = true;
  18.     //cout << node << ", " << tree[node].depth << '\n';
  19.     //cout << tree[node].depth << '\n';
  20.     for(auto v: tree[node].links){
  21.         if(!visited[v]){
  22.             tree[v].depth = tree[node].depth+1;
  23.             if(tree[v].depth>mxd){
  24.                 mxd = tree[v].depth;
  25.                 mxn = v;
  26.             }
  27.             findDepth(v);
  28.         }
  29.     }
  30. }
  31.  
  32. int main(){
  33.     //freopen("diameter.in", "r", stdin);
  34.    
  35.     cin >> n;
  36.     tree.resize(n+1);
  37.     visited.resize(n+1);
  38.     int a, b;
  39.     while(cin >> a){
  40.         cin >> b;
  41.         tree[a].links.push_back(b);
  42.         tree[b].links.push_back(a);
  43.     }
  44.     findDepth(1);
  45.     fill(visited.begin(), visited.end(), false);
  46.     //cout << "==========" << '\n';
  47.     mxd = 0;
  48.     tree[mxn].depth = 0;
  49.     findDepth(mxn);
  50.     cout << mxd << '\n';
  51.      
  52.     return 0;
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement