Cod sursa(job #2409947)

Utilizator Leonard123Mirt Leonard Leonard123 Data 19 aprilie 2019 16:15:49
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <vector>
#define maxn 100005
using namespace std;
vector <int> V[maxn];

ifstream cin("darb.in");
ofstream cout("darb.out");

int lista[maxn],nr[maxn],n,x,y,nod=1,verificat[maxn],cost[maxn];

void read(){
    cin>>x>>y;
    V[x].push_back(y);
    nr[x]++;
    V[y].push_back(x);
    nr[y]++;
}

void bfs(){
    int ultim=1;
    lista[ultim]=nod;
    cost[nod]=1;
    verificat[nod]=1;
    for(int prim=1; prim<=ultim; prim++)
        for(int i=0; i<nr[lista[prim]]; i++)
            if(!verificat[V[lista[prim]][i]]){
                lista[++ultim]=V[lista[prim]][i];
                cost[lista[ultim]]=cost[lista[prim]]+1;
                verificat[lista[ultim]]=1;
        }
    nod=lista[ultim];
}
int main(){
    cin>>n;
    for(int i=1; i<n; i++)
        read();
    bfs();
    for(int i=1; i<=n; i++)
        verificat[i]=0;
    verificat[nod]=1;
    bfs();
    cout<<cost[nod];
    return 0;
}