Pagini recente » Cod sursa (job #536726) | Cod sursa (job #1451833) | Cod sursa (job #622635) | Cod sursa (job #1392229) | Cod sursa (job #1779763)
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;
int vfmax, maxim;
vector <vector <int> > G(100002);
bool viz1[100002];
int n;
queue <int> q;
void read()
{
ifstream f("darb.in");
f >> n;
for(int i=0, a, b; i<n-1; ++i)
{
f >> a >> b;
G[a].push_back(b);
G[b].push_back(a);
}
f.close();
}
int bfs(int x)
{
q.push(x);
while(!q.empty())
{
x=q.front(); q.pop();
for(int i=0; i<G[x].size(); ++i)
{
if(!viz1[G[x][i]])
{
q.push(G[x][i]);
viz1[G[x][i]]=1;
}
}
}
return x;
}
void dfs(int x, int l)
{
viz1[x]=0;
for(int i=0; i<G[x].size(); ++i)
{
if(viz1[G[x][i]])
{
++l;
if(l>maxim) maxim=l;
dfs(G[x][i],l);
--l;
}
}
}
void solve()
{
int l;
vfmax=bfs(1);
dfs(vfmax,1);
ofstream g("darb.out");
g << maxim << '\n';
g.close();
}
int main()
{
read();
solve();
return 0;
}