Pagini recente » Cod sursa (job #2065989) | Cod sursa (job #576567) | Cod sursa (job #2479828) | Cod sursa (job #1599500) | Cod sursa (job #2481015)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
vector<int>vecini[100005];
int ln[1000005],rasp[100005];
int n;
void dfs(int nodc, int p)
{
int maxi1 = 0, maxi2 = 0;
ln[nodc]=1;
rasp[nodc]=1;
for(int i=0;i<vecini[nodc].size();i++)
{
int nodurm=vecini[nodc][i];
if(nodurm!=p)
{
dfs(nodurm,nodc);
ln[nodc] = max(ln[nodc], ln[nodurm] + 1);
rasp[nodc]=max(rasp[nodc],rasp[nodurm]);
}
if(ln[nodurm] > maxi1)
{
maxi2 = maxi1;
maxi1 = ln[nodurm];
}
else if(ln[nodurm] > maxi2)
maxi2 = ln[nodurm];
}
rasp[nodc] = max(rasp[nodc], maxi1+maxi2+1);
}
int main()
{
fin >> n;
for(int i = 1; i < n; i++)
{
int a,b;
fin >> a >> b;
vecini[a].push_back(b);
vecini[b].push_back(a);
}
dfs(1, -1);
fout << rasp[1];
return 0;
}