Cod sursa(job #1261504)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 12 noiembrie 2014 14:10:48
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<cstdio>
#include<vector>

using namespace std;

int n,i,x,y,sol,d[100002];
bool sel[100002];
vector<int> g[100002];

void dfs(int nod)
{
    int mx,my;
    mx=my=0;
    sel[nod]=true;
    vector<int>::iterator it;
    for(it=g[nod].begin();it!=g[nod].end();it++)
    {
        if(!sel[*it])
        {
            dfs(*it);
            if(d[*it]>mx)
            {
                my=mx;
                mx=d[*it];
            }
            else if(d[*it]>my)
            {
                my=d[*it];
            }
        }
    }
    d[nod]=++mx;
    if(mx+my>sol)
    {
        sol=mx+my;
    }
}

int main()
{
    freopen("darb.in","r",stdin);
    freopen("darb.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<n;i++)
    {
        scanf("%d%d",&x,&y);
        g[y].push_back(x);
        g[x].push_back(y);
    }
    dfs(1);
    printf("%d\n",sol);
}