Cod sursa(job #2632247)

Utilizator eugen5092eugen barbulescu eugen5092 Data 2 iulie 2020 17:03:43
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;

ifstream ci("darb.in");
ofstream cou("darb.out");

int n;
vector<int>v[100005];
int dp[100005];
int sol;

void citire(){
    ci>>n;
    int a,b;
    for(int i=1;i<=n;i++){
        ci>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
}

void Dfs(int nod,int provine){
    int mx=0,mx1=0;
    for(auto i:v[nod]){
        if(i!=provine){
            Dfs(i,nod);
            if(dp[i]>mx){
                mx1=mx;
                mx=dp[i];
            }else
            if(dp[i]>mx1){
                mx1=dp[i];
            }
        }
    }
    dp[nod]=mx+1;
    sol=max(sol,mx+mx1+1);
}

int main()
{
    citire();
    Dfs(1,0);
    cou<<sol;
    return 0;
}