Pagini recente » Cod sursa (job #1295314) | Cod sursa (job #347051) | Cod sursa (job #3153939) | Cod sursa (job #898692) | Cod sursa (job #2106573)
#include <fstream>
#include <vector>
#include <queue>
#define MaxN 100001
using namespace std;
int N, veg, t;
vector<int> sl[MaxN];
bool l[MaxN];
int tav[MaxN];
void Be()
{
int x, y;
ifstream f("darb.in");
f>>N;
for (int i=1;i<N;i++)
{
f>>x>>y;
sl[x].push_back(y);
sl[y].push_back(x);
}
}
int bfs1()
{
queue<int> q;
q.push(1);
l[1]=1;
int fr;
while (!q.empty())
{
fr=q.front();
for (int i=0;i<sl[fr].size();i++)
{
if (!l[sl[fr][i]])
{
q.push(sl[fr][i]);
l[sl[fr][i]]=1;
}
}
veg=fr;
q.pop();
}
}
int bfs2()
{
queue<int> q;
q.push(veg);
int fr;
tav[veg]=1;
while (!q.empty())
{
fr=q.front();
for (int i=0;i<sl[fr].size();i++)
{
if (!tav[sl[fr][i]])
{
tav[sl[fr][i]]=tav[fr]+1;
q.push(sl[fr][i]);
}
}
if (tav[fr]>t)
t=tav[fr];
q.pop();
}
}
void Ki()
{
ofstream g("darb.out");
g<<t;
}
int main()
{
Be();
bfs1();
bfs2();
Ki();
}