Pagini recente » Cod sursa (job #743035) | Cod sursa (job #2107965) | Cod sursa (job #1549634) | Cod sursa (job #383577) | Cod sursa (job #2523935)
/*
ID: Sho10
LANG: C++
TASK:
*/
#include <bits/stdc++.h> //JuniorMonster a.k.a Sho10
#define ll long long int
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#define all(a) (a).begin(), (a).end()
#define sz size
#define f first
#define s second
#define pb push_back
#define er erase
#define in insert
#define mp make_pair
#define pi pair
#define rc(s) return cout<<s,0
#define endl '\n'
#define mod 1000000007
#define PI 3.14159265359
#define CODE_START ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
ll n,dist[100005],root=1,x,y;
vector<ll>v[100005];
bitset<100005>viz;
queue<ll>q;
int32_t main(){
ifstream cin("darb.in");
ofstream cout("darb.out");
cin>>n;
for(ll i=0;i<n;i++)
{
cin>>x>>y;
v[x].pb(y);
v[y].pb(x);
}
q.push(root);
while(!q.empty()){
x=q.front();
viz[x]=1;
for(ll i=0;i<v[x].size();i++)
if(viz[v[x][i]]==0){
q.push(v[x][i]);
dist[v[x][i]]=dist[x]+1;
}
q.pop();
}
for(ll i=1;i<=n;i++)
if(dist[i]>dist[root]){
root=i;
dist[i]=0;
viz[i]=0;
}else {
dist[i]=0;
viz[i]=0;
}
q.push(root);
dist[root]=1;
while(!q.empty()){
x=q.front();
viz[x]=1;
for(ll i=0;i<v[x].size();i++)
if(viz[v[x][i]]==0){
q.push(v[x][i]);
dist[v[x][i]]=dist[x]+1;
}
q.pop();
}
cout<<dist[x]<<endl;
}