Pagini recente » Diferente pentru implica-te/arhiva-educationala intre reviziile 36 si 223 | Cod sursa (job #3208779) | Cod sursa (job #12705) | Cod sursa (job #3276069) | Cod sursa (job #3296075)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
vector<int>v[100002];
int dist[100002];
priority_queue<int>pq;
int n,a,b;
int maxi,maxim;
int main()
{
fin>>n;
for(int i=1;i<n;i++)
{
fin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
for(int i=1;i<=n;i++)
dist[i]=1e9;
pq.push(1);
dist[1]=0;
while(!pq.empty())
{
int c=pq.top();
pq.pop();
for(auto next:v[c])
{
if(dist[next]>dist[c]+1)
{
dist[next]=dist[c]+1;
pq.push(next);
if(dist[next]>maxi){maxi=dist[next];
maxim=next;}
}
}
}
for(int i=1;i<=n;i++)
dist[i]=1e9;
pq.push(maxim);
dist[maxim]=0;
maxi=0;
maxim=0;
while(!pq.empty())
{
int c=pq.top();
pq.pop();
for(auto next:v[c])
{
if(dist[next]>dist[c]+1)
{
dist[next]=dist[c]+1;
pq.push(next);
if(dist[next]>maxi){maxi=dist[next];
maxim=next;}
}
}
}
fout<<maxi+1;
return 0;
}