Pagini recente » Cod sursa (job #2252529) | Cod sursa (job #1045308) | Cod sursa (job #1956343) | Cod sursa (job #1045775) | Cod sursa (job #1116925)
#include <iostream>
#include <fstream>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#define NMax 100001
using namespace std;
list<int> v[NMax];
vector<bool> viz;
list<int>::iterator it;
int n,a,b,c;
void bf(int from){
viz=vector<bool>(n+1, false);
queue<int> coada;
coada.push(from);
do{
a=coada.front();
coada.pop();
viz[a]=true;
for(it=v[a].begin(); it!=v[a].end(); it++)
if(!viz[*it])
coada.push(*it);
}while(!coada.empty());
}
void dfRecursive(int crt, int step){
viz[crt]=true;
b=max(step, b);
for(list<int>::iterator it2=v[crt].begin(); it2!=v[crt].end(); it2++)
if(!viz[*it2])
dfRecursive(*it2, step+1);
}
int main(){
ifstream f("darb.in");
f>>n;
for(int i=1;i<n;i++)
f>>a>>b,
v[a].push_back(b),
v[b].push_back(a);
bf(1);
viz=vector<bool>(n+1, false); b=0;
dfRecursive(a, 0);
ofstream g("darb.out");
g<<(b+1)<<"\n";
return 0;
}