Pagini recente » Cod sursa (job #2146975) | Cod sursa (job #988105) | Cod sursa (job #2256717) | Cod sursa (job #1843637) | Cod sursa (job #1843030)
#include <fstream>
#include <vector>
#define VAL 100005
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int N, i, j, a, b;
int mx, rad, best;
int dist1[VAL];
int dist2[VAL];
bool viz1[VAL];
bool viz2[VAL];
vector<int> G[VAL];
void dfs1(int nod)
{
vector<int> :: iterator it;
viz1[nod]=true;
for (it=G[nod].begin(); it!=G[nod].end(); it++)
{
if (viz1[*it]==false)
{
dist1[*it]=dist1[nod]+1;
if (mx<dist1[*it])
{
mx=dist1[*it];
rad=*it;
}
dfs1(*it);
}
}
}
void dfs2(int nod)
{
vector<int> :: iterator it;
viz2[nod]=true;
for (it=G[nod].begin(); it!=G[nod].end(); it++)
{
if (viz2[*it]==false)
{
dist2[*it]=dist2[nod]+1;
best=max(best, dist2[*it]);
dfs2(*it);
}
}
}
int main()
{
fin >> N;
for (i=1; i<N; i++)
{
fin >> a >> b;
G[a].push_back(b);
G[b].push_back(a);
}
dfs1(1);
dfs2(rad);
fout << best+1 << '\n';
fin.close();
fout.close();
return 0;
}