Cod sursa(job #2404483)

Utilizator AlexDumeaAlex Dumea AlexDumea Data 12 aprilie 2019 21:01:47
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

static ifstream fin("darb.in");
static ofstream fout("darb.out");

static int N;
static int c[100001], viz[100001];
static vector<int> a[100001];

static void citire()
{
	fin >> N;
	int x, y;
	for (int i = 1; i <= N - 1; ++i)
	{
		fin >> x >> y;
		a[x].push_back(y);
		a[y].push_back(x);
	}
}

static int BFS(int x)
{
	for (int i = 0; i <= N; ++i)
		viz[i] = -1;

	int p, u;
	p = u = 1;
	c[p] = x;
	viz[x] = 0;

	while (p <= u)
	{
		x = c[p++];
		for (int i = 0; i < a[x].size(); ++i)
		{
			if (viz[a[x][i]] == -1)
			{
				viz[a[x][i]] = viz[x] + 1;
				c[++u] = a[x][i];
			}
		}
	}

	return c[u];
}

int main()
{
	citire();
	int last = BFS(1);
	int p = BFS(last);
	fout << viz[p] + 1;

	return 0;
}