Pagini recente » Cod sursa (job #2609589) | Cod sursa (job #919053) | Cod sursa (job #2672378) | Borderou de evaluare (job #3245890) | Cod sursa (job #1396932)
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
ifstream F("darb.in");
ofstream G("darb.out");
const int N = 100010;
vector<int> v[N];
int n,dist[N],x,y,mk[N];
int bfs(int x)
{
memset(mk,0,sizeof(mk));
queue<int> q;
q.push(x);
dist[x] = 0;
int lst = 0;
while ( !q.empty() )
{
int x = q.front();
mk[x] = 1;
q.pop();
lst = x;
for (int i=0;i<int(v[x].size());++i)
{
int y = v[x][i];
if ( mk[y] ) continue;
dist[y] = dist[x] + 1;
q.push(y);
}
}
return lst;
}
int main()
{
F>>n;
for (int i=1;i<n;++i)
{
F>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
x = bfs(1);
y = bfs(x);
//G<<x<<' '<<y<<'\n';
G<<dist[y]+1<<'\n';
}