Pagini recente » Borderou de evaluare (job #3364492) | Cod sursa (job #3365425) | Cod sursa (job #3365338) | Cod sursa (job #3364492) | Cod sursa (job #3365422)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("darb.in");
ofstream fout ("darb.out");
vector<vector<int>> g;
int diam=0;
void bfs(int start, int &last, int n)
{
queue<int> q;
int maxdist = 0;
vector<int> dist(n + 1, -1);
q.push(start);
dist[start] = 0;
while(!q.empty())
{
int u = q.front();
q.pop();
for(auto v : g[u])
{
if(dist[v] == -1){
dist[v] = dist[u] + 1;
if(dist[v] > maxdist)
maxdist = dist[v],diam = maxdist, last = v;
q.push(v);
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
fin >> n;
g.resize(n +1);
for(int i = 1; i<= n - 1; i++)
{
int u,v;
fin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
int Y;
bfs(1, Y, n);
int Z, X;
bfs(Y, X, n);
fout << diam << '\n';
return 0;
}