Pagini recente » Cod sursa (job #3245838) | Cod sursa (job #1192814) | Cod sursa (job #684324) | Cod sursa (job #2175831) | Cod sursa (job #1649858)
program diam;
const Nmax = 100005;
Mmax = 100005;
type vector = array[1..Nmax] of longint;
var f, g:text;
t:array[0..1,1..2 * Mmax] of longint;
i, j, k, n, last, max:longint;
viz:array[1..Nmax] of boolean;
dist1, start, coada:vector;
bufin, bufout:array[1..1 shl 16] of char;
procedure calc(nod:longint; dist:vector);
var p, u, z, i:longint;
begin
p := 1; u := 1;
coada[p] := nod;
dist[nod] := 1;
while p <= u do
begin
z := start[coada[p]];
while z <> 0 do
begin
if dist[t[0, z]] = 0 then
begin
inc(u);
coada[u] := t[0, z];
dist[t[0, z]] := dist[coada[p]] + 1;
end;
z := t[1, z];
end;
inc(p);
end;
max := 0;
for i := 1 to n do
if dist[i] > max then
begin
max := dist[i]; last := i;
end;
end;
begin
assign(f, 'darb.in'); reset(f);
assign(g, 'darb.out'); rewrite(g);
settextbuf(f, bufin); settextbuf(f, bufout);
readln(f, n);
for k := 1 to n - 1 do
begin
readln(f, i, j);
t[0, k * 2 - 1] := j;
t[1, k * 2 - 1] := start[i];
start[i] := k * 2 - 1;
t[0, k * 2] := i;
t[1, k * 2] := start[j];
start[j] := k * 2;
end;
calc(1, dist1);
calc(last, dist1);
writeln(g, max);
close(f); close(g);
end.