Pagini recente » Cod sursa (job #2356139) | Cod sursa (job #2757244) | Cod sursa (job #1228143) | Cod sursa (job #1498131) | Cod sursa (job #1592121)
#include <fstream>
#include <vector>
#define NMAX 100010
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
void BFS(int x);
vector <int> C[2]; /// C[1] = C.nod... C[2] = C.distanta
vector <int> M[NMAX];
vector <bool> v;
int n, m;
int incep, dist, i, x, y;
int X[3];
int main()
{
fin >> n;
for(i = 1; i <= n; ++i)
v.push_back(false);
for(i = 1; i < n; ++i)
{
fin >> x >> y;
M[x].push_back(y);
M[y].push_back(x);
}
BFS(1);
for(i = 0; i < v.size(); ++i)
v[i] = false;
C[1].clear();
C[2].clear();
BFS(incep);
fout << dist << '\n';
return 0;
}
void BFS(int x)
{
int i;
v[x] = true;
int ic, sc;
ic = sc = 0;
C[1].push_back(x);
C[2].push_back(1);
while(ic <= sc)
{
X[1] = C[1][ic];
X[2] = C[2][ic];
ic++;
for(i = 0; i < M[X[1]].size(); ++i)
if(v[M[X[1]][i]] == false)
{
sc++;
C[1].push_back(M[X[1]][i]);
C[2].push_back(X[2]+1);
v[M[X[1]][i]] = true;
}
}
incep = C[1][sc];
dist = C[2][sc];
}