Cod sursa(job #1120611)

Utilizator alexteStefanescu Alexandru Catalin alexte Data 25 februarie 2014 08:53:03
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;
int n,vfin,lmax=-1,a,b,viz[100003],i,d;
struct nod
{
    int v;
    nod *urm;
}*p,*LA[100003];
void df(int vf,int d)
{
    nod *p;
    viz[vf]=d;
    if(lmax<d)
    {
        lmax=d;
        vfin=vf;
    }
    for(p=LA[vf];p;p=p->urm)
    {
        if(viz[p->v]==0)
            {
                df(p->v, d+1);
            }
    }

}
void init(int viz[])
{
    int i;
    for(i=1;i<=n;i++)
        viz[i]=0;
}
int main()
{
    ifstream fin("darb.in");
    ofstream fout("darb.out");
    fin>>n;
    for(i=1;i<n;++i)
    {
        fin>>a>>b;
        p=new nod;
        p->v=b;
        p->urm=LA[a];
        LA[a]=p;

        p=new nod;
        p->v=a;
        p->urm=LA[b];
        LA[b]=p;
    }
    lmax=0;
    df(1,1);
    init(viz);
    lmax=0;
    df(vfin,1);
    fout<<lmax;
    fout.close();
    return 0;
}