Pagini recente » Cod sursa (job #896086) | Cod sursa (job #2181992) | Cod sursa (job #741977) | Cod sursa (job #1043394) | Cod sursa (job #2723608)
#include <bits/stdc++.h>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
#define int long long
const int Max = 1e5+1;
void nos()
{
ios_base::sync_with_stdio(NULL);
cin.tie(NULL);
}
int n;
vector < int > v[Max];
struct ans{
int nod;
int len;
};
ans bfs(int nod)
{
int len[Max] = {};
queue < int > c;
c.push(nod);
ans sol;
sol.len = 0;
while(!c.empty())
{
int nod = c.front();
c.pop();
for(int dest :v[nod])
if(len[dest] == 0)
{
len[dest] = len[nod] + 1;
if(len[dest] > sol.len)
sol={dest,len[dest]};
c.push(dest);
}
}
return sol;
}
void read()
{
f>>n;
int i;
for(i=1;i<n;i++)
{
int n1,n2;
f>>n1>>n2;
v[n1].push_back(n2);
v[n2].push_back(n1);
}
}
void solve()
{
int i;
for(i=1;i<=n;i++)
if(v[i].size() == 1)
{
//leaf
ans this_ans = bfs(i);
ans final_ans = bfs(this_ans.nod);
g<<final_ans.len + 1;
break;
}
}
int32_t main()
{
nos();
read();
solve();
return 0;
}