Pagini recente » Cod sursa (job #46024) | Cod sursa (job #575893) | Cod sursa (job #2276161) | Cod sursa (job #95349) | Cod sursa (job #3349682)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
const int NMAX = 100005;
vector<int> adj[NMAX];
int dist[NMAX];
int n;
int bfs(int st)
{
for (int i = 1; i <= n; i++)
dist[i] = -1;
queue<int> q;
q.push(st);
dist[st] = 1;
int st2 = st;
while (!q.empty())
{
int u = q.front();
q.pop();
if (dist[u] > dist[st2])
{
st2 = u;
}
for (int v : adj[u])
{
if (dist[v] == -1)
{
dist[v] = dist[u] + 1;
q.push(v);
}
}
}
return st2;
}
int main()
{
f>>n;
for (int i = 0; i < n - 1; i++)
{
int u, v;
f >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
int x = bfs(1);
int y = bfs(x);
g << dist[y] << endl;
return 0;
}