Advertisement
siddharth963

codeforces WA

Oct 31st, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4.  
  5. int node=-1;
  6. vector<int>adjlist[300001];
  7. int vis[300001];
  8. int maxi=0;
  9.  
  10. int dfs(int c,int p,int g){
  11.     if(vis[c]==1) return 0;
  12.     vis[c]=1;
  13.     for(int i=0;i<adjlist[c].size();i++){
  14.         if(adjlist[c][i]==p) continue;
  15.         int as=dfs(adjlist[c][i],c,g+1);
  16.         maxi=max(as,maxi);
  17.     }
  18.     return g;
  19. }
  20.  
  21. int dfs1(int c,int p){
  22.     if(vis[c]==1) return 0;
  23.     vis[c]=1;
  24.     for(int i=0;i<adjlist[c].size();i++){
  25.         if(adjlist[c][i]==p) continue;
  26.         int g=0;
  27.         g=dfs1(adjlist[c][i],c)+1;
  28.         if(g>maxi){
  29.             maxi=g; node = adjlist[c][i];
  30.         }
  31.     }
  32.     return 1;
  33. }
  34.  
  35. void solve(){ // testcases
  36.     int n;
  37.     scanf("%d",&n);
  38.     int t2,t1;
  39.     for(int i=0;i<n-1;i++){
  40.         scanf("%d%d",&t1,&t2);
  41.         adjlist[t1].push_back(t2);
  42.         adjlist[t2].push_back(t1);
  43.     }
  44.     if(n==1)  { printf("0\n"); return ; }
  45.     dfs1(1,0);
  46.  
  47.     for(int i=0;i<=n;i++) vis[i]=0;
  48.     maxi=0;
  49.  
  50.     dfs(node,0,0);
  51.     // printf("node: %d\n",node);
  52.     printf("%d\n",maxi*3);
  53.  
  54.     return;
  55. }
  56. int main(){
  57.     int testcase=1,z=1;
  58.     // scanf("%d",&testcase);
  59.     while(z<=testcase){
  60.         solve(); z++;
  61.     }
  62.     return 0;
  63. }
  64. /*
  65.  
  66.  
  67. 1
  68. 3
  69. 8 8 7
  70.  
  71.  
  72. */
  73.  
  74.  
  75. /*
  76.  
  77.  
  78. 6
  79. 1 2
  80. 1 3
  81. 1 4
  82. 1 5
  83. 3 6
  84.  
  85. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement