Pagini recente » Cod sursa (job #389530) | Cod sursa (job #46966) | Cod sursa (job #835156) | Cod sursa (job #2857533) | Cod sursa (job #2815044)
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
int n;
vector<vector<int>> arb(100000);
vector<int> viz(100000,-1);
int bfs(int start, vector<vector<int> > mat) {
deque<int> coada;
vector<int> viz(n+1 , -1);
viz[start] = 0;
coada.push_back(start);
while (coada.empty() == false) {
for (auto x:mat[coada[0]]) {
if (viz[x]==-1) {
coada.push_back(x);
viz[x] = viz[coada[0]]+1;
}
}
coada.pop_front();
}
int maxim=0,nr;
for(int i = 1 ; i < n+1 ; ++i)
if(viz[i]>maxim)
{maxim=viz[i];
nr=i;
}
return nr;
}
void dfs( int n )
{
for(int a : arb[n])
if(viz[a]==-1){
viz[a]=viz[n]+1;
dfs(a);
}
}
int main() {
f>>n;
int x,y;
for(int i = 0 ; i < n ; ++i )
{
f>>x>>y;
arb[x].push_back(y);
arb[y].push_back(x);
}
dfs(bfs(n,arb));
int maxim=0;
for(int i = 1 ; i <= n ; ++i)
if(viz[i]>maxim)
maxim=viz[i];
g<<maxim+2;
return 0;
}