Mai intai trebuie sa te autentifici.
Cod sursa(job #1568795)
Utilizator | Data | 14 ianuarie 2016 18:33:30 | |
---|---|---|---|
Problema | Diametrul unui arbore | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.7 kb |
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
vector<int> v[100010];
int n,m,i,j,k,a,b,sol,niv[100010];
void dfs(int,int);
int main()
{
f>>n>>m;
for(i=2;i<=n;i++)
{
f>>j>>k;
v[j].push_back(k);
v[k].push_back(j);
}
dfs(1,1);
for(i=1;i<=n;i++)
{
if(niv[i]>niv[a])
a=i;
niv[i]=0;
}
dfs(a,1);
for(i=1;i<=n;i++)
sol=max(sol,niv[i]);
g<<sol;
return 0;
}
void dfs(int nod,int nivel)
{
niv[nod]=nivel;
for(auto it:v[nod])
if(!niv[it])
dfs(it,nivel+1);
}