Cod sursa(job #1293687)

Utilizator pavlov.ionPavlov Ion pavlov.ion Data 16 decembrie 2014 13:16:49
Problema Diametrul unui arbore Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<fstream>
#include<queue>
#include<vector>
#define MAXN 100005
#define pb push_back
using namespace std;
ifstream cin("darb.in");
ofstream cout("darb.out");
vector<int> G[MAXN];
int C[MAXN];
queue<int> q;
int N;
void citire(){
					int x,y;
					cin>>N;
					for(int i=1;i<N;i++){
													cin>>x>>y;
													G[x].pb(y);
													G[y].pb(x);
													}
}
void BFS(int S){
    int x;
    memset(C,-1,MAXN);
    q.push(S);
    C[S]=0;
    while(!q.empty()){
									x=q.front();
									q.pop();
									for(int i=0;i<G[x].size();i++){
													  if(C[G[x][i]]==-1){
																								C[G[x][i]]=C[x]+1;
																								q.push(G[x][i]);
															}//end if
									}						
				}
}//end bfs
int maxim(){
    int retine;
				int max=-10;
				int i;
				for(i=1;i<=N;i++)
				        if(C[i]>max){
																				max=C[i];
																				retine=i;
																				}
			return retine;
}
int main(){
				   citire();
				   BFS(1);
				   BFS(maxim());
				   cout<<C[maxim()]+1;
return 0;
}