Pagini recente » Cod sursa (job #1902322) | Cod sursa (job #2196515) | Cod sursa (job #614609) | Cod sursa (job #856127) | Cod sursa (job #2749308)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
int n,a,b,maxd,lastp,lmax[100001];
vector <vector<int>> v(100001);
int viz[100001];
queue <int> q;
void dfs (int poz,int dis)
{
memset(viz,0,sizeof(viz));
memset(lmax,0,sizeof(lmax));
q.push(poz);
viz[poz]=1;
lmax[poz]=1;
while (!q.empty())
{
int a=q.front();
for (int j=0; j<v[a].size(); j++)
{
if (viz[v[a][j]]==0)
{
lmax[v[a][j]]=lmax[a]+1;
q.push(v[a][j]);
viz[v[a][j]]=1;
lastp=v[a][j];
if (maxd<lmax[v[a][j]])
maxd=lmax[v[a][j]];
}
}
q.pop();
}
/*if (maxd<dis)
maxd=dis;
viz[poz]=1;
for (int i=0; i<v[poz].size(); i++)
{
if (viz[v[poz][i]]==0)
{
dfs(v[poz][i],dis+1);
}
}
viz[poz]=0;*/
}
int main()
{
f>>n;
for (int i=1; i<=n; i++)
{
f>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1,0);
dfs(lastp,0);
g<<maxd;
return 0;
}