Pagini recente » Cod sursa (job #528377) | Cod sursa (job #2909679) | Cod sursa (job #752191) | Cod sursa (job #627915) | Cod sursa (job #2321109)
#include <bits/stdc++.h>
#define NMAX 100001
using namespace std;
ifstream in("darb.in");
ofstream out("darb.out");
int viz1[NMAX], viz2[NMAX], viz3[NMAX];
list<int> *l;
int main()
{
int n, m;
in >> n; m = n-1;
l = new list<int>[n+1];
while(m--)
{
int x, y;
in >> x >> y;
l[x].push_back(y);
l[y].push_back(x);
}
int nod1;
queue<int> q1;
q1.push(1);
while(!q1.empty())
{
nod1 = q1.front(); q1.pop();
viz1[nod1] = 1;
for(auto it = l[nod1].begin(); it != l[nod1].end(); it++)
if(viz1[*it] == 0)
{
viz1[*it] = 1;
q1.push(*it);
}
}
int nod2;
queue<int> q2;
q2.push(nod1);
while(!q2.empty())
{
nod2 = q2.front(); q2.pop();
viz2[nod2] = 1;
for(auto it = l[nod2].begin(); it != l[nod2].end(); it++)
if(viz2[*it] == 0)
{
viz2[*it] = 1;
q2.push(*it);
}
}
int diam = 0;
queue<int> q3;
q3.push(nod2);
while(!q3.empty())
{
int nod3 = q3.front(); q3.pop();
if(nod3 == nod1) break;
for(auto it = l[nod3].begin(); it != l[nod3].end(); it++)
if(viz3[*it] == 0)
{
viz3[*it] = viz3[nod3]+1;
q3.push(*it);
}
}
out << viz3[nod1]+1;
return 0;
}