Pagini recente » Cod sursa (job #2172464) | Cod sursa (job #2874703) | Cod sursa (job #2404949) | Cod sursa (job #146211) | Cod sursa (job #2377375)
#include <bits/stdc++.h>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
int n, a, b;
vector<vector<int>> edges;
vector<int> dist;
void bfs(int s)
{
deque<int> dq;
dq.push_back(s);
dist[s] = 0;
while (!dq.empty())
{
int x = dq.front();
dq.pop_front();
for (auto next : edges[x])
if (dist[next] == -1)
dist[next] = dist[x] + 1,
dq.push_back(next);
}
}
int get_diameter()
{
bfs(1);
int indx = 1;
for (int i = 2; i <= n; ++i)
if (dist[indx] < dist[i])
indx = i;
for (auto& x : dist)
x = -1;
bfs(indx);
int mx = -1;
for (auto x : dist)
mx = max(mx, x);
return mx + 1;
}
int main()
{
f >> n;
edges.resize(n + 1);
dist.resize(n + 1, -1);
for (int i = 1; i < n; ++i)
f >> a >> b,
edges[a].push_back(b),
edges[b].push_back(a);
g << get_diameter();
return 0;
}