Pagini recente » Cod sursa (job #67594) | Cod sursa (job #349203) | Cod sursa (job #1884901) | Cod sursa (job #2984318) | Cod sursa (job #1414126)
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#define NMAX 100005
using namespace std;
vector <int> G[NMAX];
int N, dist[NMAX];
void citire()
{
int a, b;
scanf("%d", &N);
for (int i = 1; i <= N; ++i)
{
scanf("%d %d", &a, &b);
G[a].push_back(b);
G[b].push_back(a);
}
}
void bfs(int nod)
{
vector <int> :: iterator it;
queue <int> q;
int n;
q.push(nod);
dist[nod] = 1;
while (q.empty() == false)
{
n = q.front();
q.pop();
for (it = G[n].begin(); it != G[n].end(); ++it)
{
if (dist[*it] == 0)
{
dist[*it] = dist[n] + 1;
q.push(*it);
}
}
}
}
int main()
{
freopen("darb.in", "r", stdin);
freopen("darb.out", "w", stdout);
int nodmax, dmax = 0;
citire();
bfs(1);
for (int i = 1; i <= N; ++i)
{
if (dmax < dist[i])
{
dmax = dist[i];
nodmax = i;
}
}
memset(dist, 0, sizeof(dist));
bfs(nodmax);
dmax = 0;
for (int i = 1; i <= N; ++i)
dmax = max(dmax, dist[i]);
printf("%d", dmax);
return 0;
}