Cod sursa(job #1140158)

Utilizator roby2001Sirius roby2001 Data 11 martie 2014 19:35:32
Problema Diametrul unui arbore Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
/*
Keep It Simple!
*/

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif


#include<stdio.h>
#include<list>

#define MaxN 100005
#define MaxV(a,b) ((a)>(b)?(a):(b))

using namespace std;

int N, x, y, Level[MaxN],VMax,PMax;
list<int> G[MaxN];
bool viz[MaxN];

void DFS(int node)
{
	viz[node] = 1;
	for (list<int>::iterator it = G[node].begin(); it != G[node].end(); it++)
	{
		if (viz[*it]) continue;
		Level[*it] = Level[node] + 1;
		if (Level[*it] > VMax) {
			VMax = Level[*it]; PMax = *it;
		}
		DFS(*it);
	}
}

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

	scanf("%d", &N);

	VMax = 0;

	for (int i = 1; i <= N; i++)
	{
		scanf("%d%d", &x, &y);
		G[x].push_back(y);
		G[y].push_back(x);
	}
	DFS(1);
	VMax = 0;
	Level[PMax] = 0;
	memset(viz, 0, sizeof(viz));
	DFS(PMax);
	printf("%d", VMax+1);

}