Pagini recente » Cod sursa (job #1028109) | Cod sursa (job #3221232) | Cod sursa (job #1770650) | Cod sursa (job #1110352) | Cod sursa (job #1492777)
#include <bits/stdc++.h>
using namespace std;
int n, sol[100001];
vector<int>a[100001];
queue<int>q;
inline void Citire()
{
int i, x, y;
ifstream fin("darb.in");
fin >> n;
for(i = 1; i <= n; ++i)
{
fin >> x >> y;
if(x != y)
a[x].push_back(y);
a[y].push_back(x);
}
fin.close();
}
inline void BFS(int s)
{
int i, j;
unsigned int k;
for(i = 1; i <= n; ++i)
sol[i] = -1;
sol[s] = 0;
q.push(s);
while(!q.empty())
{
i = q.front();
q.pop();
for(k = 0; k < a[i].size(); ++k)
{
j = a[i][k];
if(sol[j] == -1)
{
sol[j] = 1 + sol[i];
q.push(j);
}
}
}
}
int main()
{
int maxim, nod, i;
Citire();
BFS(1);
maxim = 0;
for(i = 1; i <= n; ++i)
if(sol[i] > maxim)
{
maxim = sol[i];
nod = i;
}
BFS(nod);
for(i = 1; i <= n; ++i)
maxim = max(maxim, sol[i]);
maxim++;
ofstream fout("darb.out");
fout << maxim <<"\n";
fout.close();
return 0;
}