Pagini recente » Cod sursa (job #1023823) | Cod sursa (job #2884026) | Cod sursa (job #1024326) | Cod sursa (job #923367) | Cod sursa (job #1424296)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define inf 10000000
using namespace std;
ifstream in("darb.in");
ofstream out("darb.out");
queue <int> q;
vector <int> v[100003];
void bfs(int nod,int d[],int n)
{
int visited[ n+1],u;
for(int i = 1 ; i <= n ; i ++)
{
d[i]=inf;
visited[i] = false;
}
d[nod] = 0;
q.push(nod);
while(!q.empty())
{
u = q.front();
visited[u]=1;
q.pop();
for(auto it2 = v[u].cbegin();it2!=v[u].cend();++it2)
if (visited[*it2]==0)
{
q.push(*it2);
visited[*it2] = 1;
d[*it2] = d[u]+1;
}
}
}
int main()
{
int n,i,x,y,dm,p;
in >> n;
int d[n+1];
for( i = 0 ; i < n ; i ++)
{
in >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
dm = 0;
p = 0;
bfs(1,d,n);
for( i = 1 ; i <= n ; i ++)
if (d[i]>dm)
{
dm = d[i];
p = i;
}
bfs(p,d,n);
for( i = 1 ; i <= n ; i ++)
if (d[i]>dm)
dm = d[i];
out<<(dm+1);
return 0;
}