Cod sursa(job #1293960)

Utilizator pavlov.ionPavlov Ion pavlov.ion Data 16 decembrie 2014 20:09:14
Problema Diametrul unui arbore Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<fstream>
#include<queue>
#include<vector>
#include<cstring>
#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],viz[MAXN];
queue<int> q;
int N,last,d;
void citire(){
					int x,y;
					cin>>N;
					for(int i=0;i<N-1;i++){
													cin>>x>>y;
													G[x].pb(y);
													G[y].pb(x);
													}
}
void BFS(int S){
    int x,i;
    memset(C,0,MAXN);
    memset(viz,0,MAXN);
    q.push(S);
    C[S]=1;
    viz[S]=1;
    while(!q.empty()){
									x=q.front();
									for(i=0;i<G[x].size();i++){
													  if(viz[G[x][i]]==0){
																								C[G[x][i]]=C[x]+1;
																								viz[G[x][i]]=1;
																								q.push(G[x][i]);
																								last=G[x][i];
																								d=C[G[x][i]];
															}//end if
									}	
				q.pop();										
				}
}//end bfs
int main(){
				   citire();
				   BFS(1);
				   BFS(last);
				   cout<<d;
return 0;
}