Cod sursa(job #1171508)

Utilizator timicsIoana Tamas timics Data 15 aprilie 2014 20:33:17
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
int x,y,N,ind,ma=0,d[100100];
vector<int> m[100100];
bool viz[100100];

void reset() {
    for(int i=1;i<=N;++i) {
        viz[i]=0;
        d[i]=0;
    }
    ma = 0;
}

void dfs(int x) {

    viz[x]=1;
    for(int i=0;i<m[x].size();++i) {
        int y = m[x][i];
        if(!viz[y]) {
            d[y] = d[x]+1;
            dfs(y);
        }
    }

    if(d[x]>ma) {
        ma = d[x];
        ind = x;
    }
}

int main() {
    //freopen("input.in","r",stdin);
    freopen("darb.in","r",stdin);
    freopen("darb.out","w",stdout);
    scanf("%d",&N);
    for(int i=1;i<N;++i) {
        scanf("%d%d",&x,&y);
        m[x].push_back(y);
        m[y].push_back(x);
    }

    dfs(1);
    x = ind;
    //printf("%d %d\n",ind,ma);
    reset();
    dfs(x);
    //printf("%d %d\n",ind,ma);
    printf("%d",ma+1);
    return 0;
}