Cod sursa(job #1554875)

Utilizator antanaAntonia Boca antana Data 21 decembrie 2015 21:21:42
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <cstdio>
#define MAX 100000
using namespace std;
struct nodul{
    int val;
    nodul *next;
};
nodul *v[MAX+1];
void adauga(int nod, int vecin)
{
    nodul *aux;
    aux=new nodul;
    aux->val=vecin;
    aux->next=v[nod];
    v[nod]=aux;
}
int viz[MAX+1], coada[MAX+1];
int bfs(int nod)
{
    nodul *aux;
    int ic=1, sf=1;
    viz[nod]=1;
    coada[ic]=nod;
    while(ic<=sf)
    {
        aux=v[coada[ic]];
        while(aux!=NULL)
        {
            if(viz[aux->val]==0)
            {
               viz[aux->val]=viz[coada[ic]]+1;
               coada[++sf]=aux->val;
            }
            aux=aux->next;
        }
        ic++;
    }
    return coada[sf];
}
int main()
{
    freopen("darb.in", "r", stdin);
    freopen("darb.out", "w", stdout);
    int n, s, l, i, x, y;
    scanf("%d", &n);
    for(i=1;i<n;i++)
    {
        scanf("%d%d", &x, &y);
        adauga(x, y);
        adauga(y, x);
    }
    s=bfs(1);
    for(i=1;i<=n;i++)
        viz[i]=0;
    l=bfs(s);
    printf("%d", viz[l]);
    return 0;
}