Pagini recente » Cod sursa (job #1311970) | Cod sursa (job #2313998) | Cod sursa (job #1960137) | Cod sursa (job #2387380) | Cod sursa (job #2749468)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
#define NMAX 100005
int n, s;
vector<int> tree[NMAX];
queue<int> q;
int dmin[NMAX];
void read()
{
fin>>n;
int n1, n2;
for(int i=0; i<n-1; i++)
{
fin>>n1>>n2;
tree[n1].push_back(n2);
tree[n2].push_back(n1);
}
}
void newnode()
{
int node=q.front();
s=node;
q.pop();
for(auto &node2:tree[node])
if(!dmin[node2])
{
dmin[node2]=dmin[node]+1;
q.push(node2);
}
}
void finds(int a)
{
for(int i=1; i<=n; i++)
dmin[i]=0;
dmin[a]=1;
q.push(a);
while(!q.empty())
{
newnode();
}
}
/*void findotheredge()
{
q.push(s);
dmin[s]=1;
while(!q.empty())
newnode();
for(int i=1; i<=n; i++)
if(dmin[i]>dmin[s])
s=i;
}*/
int main()
{
read();
finds(1);
finds(s);
//cout<<s<<'\n';
fout<<dmin[s];
return 0;
}