Pagini recente » Cod sursa (job #322724) | Cod sursa (job #2137926) | Cod sursa (job #3182120) | Cod sursa (job #1435203) | Cod sursa (job #2173631)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define nmax 100005
ifstream f("darb.in");
ofstream g("darb.out");
vector<int>Q[nmax];
int n,longestseq[nmax],viz[nmax],diameter;
void read()
{
f>>n;
for (int i=1; i<=n; ++i)
{
int e1,e2;
f>>e1>>e2;
Q[e1].push_back(e2);
Q[e2].push_back(e1);
}
}
void dfs(int nod)
{
longestseq[nod]=1;
viz[nod]=true;
int mx1=0,mx2=0;
for (auto w:Q[nod])
{
if (viz[w])
continue;
dfs(w);
longestseq[nod]=max(longestseq[nod],longestseq[w]+1);
if (longestseq[w]>mx1)
{
mx2=mx1;
mx1=longestseq[w];
}
else if (longestseq[w]>mx2)
mx2=longestseq[w];
}
diameter=max(diameter,mx1+mx2+1);
}
void solve()
{
dfs(1);
g<<diameter;
}
int main()
{
read();
solve();
return 0;
}