Cod sursa(job #1451537)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 17 iunie 2015 14:57:35
Problema Diametrul unui arbore Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<fstream>
#include<vector>
#include<queue>
#define maxn 100005
using namespace std;
ifstream fi("darb.in");
ofstream fo("darb.out");
 
vector <int> a[maxn];
queue <int> q;
int i,n,x,y,d[maxn];
int solutie;
 
int bfs(int plecare){
     int i,lung_max,nod,lung;
     
     for(i=1;i<=n;i++) d[i]=0; 
      
     lung_max=1;
     d[plecare]=1; 
	 q.push(plecare);
      
     while(q.size())
      {
       nod=q.front();
       if(d[nod]>lung_max) lung_max=d[nod];
        
       lung=a[nod].size();
       for(i=0;i<lung;i++)
         if(!d[a[nod][i]]){
                           d[a[nod][i]]=d[nod]+1;
                           q.push(a[nod][i]);
                          }
       q.pop();
      }
    
     return lung_max;
}
 
int main(){
    fi>>n; 
    for(i=1;i<n;i++){
                     fi>>x>>y;
                     a[x].push_back(y);
                     a[y].push_back(x);
                    }
     
    solutie=1; 
    for(i=1;i<=n;i++)
       solutie=max(solutie,bfs(i));
       
    fo<<solutie;
     
    fi.close();
    fo.close();
    return 0;
}