Pagini recente » Cod sursa (job #2854132) | Cod sursa (job #2178353) | Cod sursa (job #117093) | Cod sursa (job #2077107) | Cod sursa (job #1917997)
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("darb.in");
ofstream out ("darb.out");
const int N = 100005;
vector <int> g[N];
int dmax, pmax, n;
int c[N], d[N];
bool viz[N];
void bfs(int start)
{
for(int i = 1; i <= n; i++)
{
c[i] = 0;
d[i] = 0;
viz[i] = false;
}
dmax = 1;
int p = 1, u = 1, x;
d[start] = 1;
viz[start] = true;
c[1] = start;
vector <int> :: iterator it;
while(p <= u)
{
x = c[p];
p++;
for(it = g[x].begin(); it < g[x].end(); ++it)
{
if(viz[*it] == false)
{
{
viz[*it] = true;
u++;
c[u] = *it;
d[*it] = d[x] + 1;
if(d[*it] > dmax)
{
dmax = d[*it];
pmax = *it;
}
}
}
}
}
}
int main()
{
in >> n;
int i, x, y;
for(i = 1; i < n; i++)
{
in >> x >> y;
g[x].push_back(y);
g[y].push_back(x);
}
bfs(1);
bfs(pmax);
out << dmax;
return 0;
}