Cod sursa(job #1228599)

Utilizator andreas.chelsauAndreas Chelsau andreas.chelsau Data 14 septembrie 2014 18:00:29
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <vector>
using namespace std;

vector<int> L[100001];
int node,l,lmax,visited[100001];

void add(int i, int j){
	L[i].push_back(j);
	L[j].push_back(i);
}

void dfs(int i){
	visited[i] = 1;
	l++;
	if(l > lmax)
		lmax = l,
		node = i;
	for(unsigned int k = 0; k < L[i].size(); k++){
		if(visited[L[i][k]] != 1){
			dfs(L[i][k]);
		}
	}
	l--;
}
void reset(int n){

	for(int i = 1; i <= n; i++)
		visited[i] = 0;
	l = 0; lmax = 0;
}

int main(){
	freopen("darb.in","r",stdin);
	freopen("darb.out","w",stdout);

	int n;
	scanf("%d",&n);
	for(int i = 0; i < n; i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		add(a,b);
	}	
	dfs(1);
	reset(n);
	dfs(node);
	printf("%d\n",lmax);
	return 0;
}