Cod sursa(job #1610096)

Utilizator ceagarMEMA MIHAI-RAUL ceagar Data 23 februarie 2016 11:41:33
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<fstream>
using namespace std;
struct nod
{
    int vecin;
    nod *leg;
};
int coada[100009],n,viz[100009],frunza,pr,ul;
nod *lv[100009],*p;
ifstream fin("darb.in");
ofstream fout("darb.out");
void bfs(int vfstart)
{
    int i,x,y;
    for(i=1;i<=n;i++)
    {
        viz[i]=1;
    }
    coada[1]=vfstart;
    pr=1;ul=1;
    viz[vfstart]=0;
    while(pr<=ul)
    {
        x=coada[pr];
        for(p=lv[x];p!=0;p=p->leg)
        {
            y=p->vecin;
            if(viz[y]==1)
            {
                viz[y]=1+viz[x];
                ul++;
                coada[ul]=y;
            }
        }
        pr++;
    }
}
int main()
{
    int i,x,y;
    fin>>n;
    for(i=1;i<=n-1;i++)
    {
        fin>>x>>y;
        p=new nod;
        p->vecin=y;
        p->leg=lv[x];
        lv[x]=p;
        p=new nod;
        p->vecin=x;
        p->leg=lv[y];
        lv[y]=p;
    }
    bfs(1);
    frunza=coada[ul];
    bfs(frunza);
    fout<<viz[coada[ul]]+1;
    fin.close();
    fout.close();
    return 0;
}