Cod sursa(job #1744018)

Utilizator KonoplyankaKonoplyanka Konoplyanka Data 19 august 2016 09:38:23
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
int sol,n,i,x,y,dp[1<<17];
bool viz[1<<17];
vector <int> V[1<<17];
inline void dfs(int nod)
{
    viz[nod]=1;
    int a=0,b=0;
    for(int i=0;i<V[nod].size();++i)
        if(!viz[V[nod][i]])
    {
        dfs(V[nod][i]);
        dp[nod]=max(dp[nod],dp[V[nod][i]]+1);
        if(dp[V[nod][i]]>a)
        {
            b=a;
            a=dp[V[nod][i]];
        }
        else if(dp[V[nod][i]]>b) b=dp[V[nod][i]];
    }
    sol=max(sol,a+b+1);
    if(!dp[nod]) dp[nod]=1;
}
int main()
{
    f>>n;
    for(i=1;i<n;++i)
    {
        f>>x>>y;
        V[x].push_back(y);
        V[y].push_back(x);
    }
    dfs(1);
    g<<sol;
    return 0;
}