Cod sursa(job #1095829)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 31 ianuarie 2014 23:30:18
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <vector>
#include <cstring>

#define Nmax 100666

using namespace std;
int N,Distance[ Nmax ],start;
vector<int> G[ Nmax ];

void read()
{
    scanf("%d",&N);
    int a,b;
    for(int i = 1; i < N; ++i)
    {
        scanf("%d%d",&a,&b);
        G[ a ].push_back(b);
        G[ b ].push_back(a);
    }
}

void DFS( const int nodc )
{
    if(Distance[ nodc ] > Distance[ start ])
        start = nodc;
    for(vector<int>::iterator it = G[nodc].begin(); it != G[nodc].end();++it)
        if(Distance[*it] == 0)
        {
                Distance[*it] = Distance[nodc] + 1;
                DFS(*it);
        }
}

void solve()
{
    Distance[ 1 ] = 1;
    DFS(1);
    memset(Distance,0,sizeof(Distance));
    Distance[ start ] = 1;
    DFS(start);
    printf("%d\n",Distance[ start ]);
}

int main()
{

    freopen("darb.in","r",stdin);
    freopen("darb.out","w",stdout);

    read();
    solve();

    return 0;
}