Cod sursa(job #1967898)

Utilizator eden001Muntean Natan eden001 Data 17 aprilie 2017 12:02:56
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int cost,m,o;
struct graf{
    int nod;
    graf*urm;
}*a[100001];
void add(int x,int y){
    graf*f=new graf;
    f->nod=y;
    f->urm=a[x];
    a[x]=f;
}
void dfs(bool* &v,int k){
    v[k]=true;
    cost++;
    if(cost>m){
        m=cost;
        o=k;
    }
    graf*f;
    f=a[k];
    while(f){
        if(!v[f->nod])dfs(v,f->nod);
        f=f->urm;
    }
    cost--;
}

int main(){
    int n,i,x,y;
    fin>>n;
    bool* viz=new bool[n+1];
    for(i=1;i<n;i++){
        fin>>x>>y;
        add(x,y);
        add(y,x);
    }
    for(i=1;i<n;i++)viz[i]=false;
    dfs(viz,1);
    cost=0;m=0;
    for(i=1;i<n;i++)viz[i]=false;
    dfs(viz,o);
    fout<<m;
    return 0;
}