Pagini recente » Cod sursa (job #2164076) | Cod sursa (job #2746821) | Cod sursa (job #397238) | Cod sursa (job #238041) | Cod sursa (job #2207598)
#include <iostream>
#include<vector>
#include<fstream>
using namespace std;
void dfs(int nod,vector<int>& dist,vector<bool>& viz,const vector<vector<int> >& la )
{
if(viz[nod])
return;
viz[nod]=true;
for(int i=0; i<la[nod].size(); ++i)
if(!viz[la[nod][i]])
{
dist[la[nod][i]]=dist[nod]+1;
dfs(la[nod][i],dist,viz,la);
}
}
int main()
{
ifstream fin("darb.in");
ofstream fout("darb.out");
int n,x,y;
fin>>n;
vector<vector<int> > la;
la.resize(n+1);
for(int i=1; i<n; ++i)
{
fin>>x>>y;
la[x].push_back(y);
la[y].push_back(x);
}
vector<int> dist(n+1,1);
vector<bool> viz(n+1,false);
dfs(1,dist,viz,la);
struct nod
{
int indice,distanta;
nod(int x=0,int y=0):indice(x),distanta(y){}
} maxim;
for(int i=1; i<=n; ++i)
if(maxim.distanta<dist[i])
{
maxim.indice=i;
maxim.distanta=dist[i];
}
dist.clear();
dist.resize(n+1,1);
viz.clear();
viz.resize(n+1,false);
dfs(maxim.indice,dist,viz,la);
for(int i=1; i<=n; ++i)
if(maxim.distanta<dist[i])
{
maxim.indice=i;
maxim.distanta=dist[i];
}
fout<<maxim.distanta<<'\n';
return 0;
}