Cod sursa(job #2101684)

Utilizator AsttridMocanu Ada Astrid Asttrid Data 7 ianuarie 2018 19:57:52
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<bits/stdc++.h>
using namespace std;
ifstream in("darb.in");
ofstream out("darb.out");

vector<int>L[100001];
int n,D;
int viz[100001];

void citire(){int i,x,y;
in>>n;
for(i=1;i<n;i++){
    in>>x>>y;
    L[x].push_back(y);
    L[y].push_back(x);
}}

void bfs(int x){int q[100001];
    viz[x]=1;
    int p,u,i,y,z;
    p=u=1;
    q[u]=x;
    while(p<=u){
        y=q[p++];
        for(i=0;i<L[y].size();i++){
           z=L[y][i];
           if(!viz[z]){
               viz[z]=viz[y]+1;
               q[++u]=z;}
                                }
                }
            }

int main(){int maxx,x,poz,i;
citire();
bfs(1);
for(i=2,maxx=1;i<=n;++i)
    if(viz[i]>maxx)maxx=viz[i],poz=i;
memset(viz,0,sizeof(viz));
bfs(poz);
for(i=1,maxx=1;i<=n;++i)
    if(viz[i]>maxx)maxx=viz[i];
out<<maxx<<"\n";
out.close();
in.close();

return 0;}