Pagini recente » Cod sursa (job #376586) | Cod sursa (job #2960582) | Cod sursa (job #3149612) | Cod sursa (job #2047085) | Cod sursa (job #1180111)
Program diametru;
type lista=^celula;
celula=record
info:longint;
pred:lista;
end;
var lda:array[1..100000] of lista;
viz,D:array[0..100000] of longint;
a,b,n,m,k,i,t,g,j,max,nod1:longint;
b1,b2 : array [0..1 shl 17] of char;
procedure add(v:longint; var p:lista);
var r:lista;
begin
new(r);
r^.info:=v;
r^.pred:=p;
p:=r;
end;
procedure dfs(nod:longint);
var r:lista;
begin
viz[nod]:=1;
r:=lda[nod];
while r<>nil do begin
if viz[r^.info]=0 then begin
D[r^.info]:=D[nod]+1;
if D[r^.info]>max then begin
max:=D[r^.info];
nod1:=r^.info;
end;
dfs(r^.info);
end;
r:=r^.pred;
end;
end;
begin
assign(input,'darb.in'); settextbuf(input,b1); reset(input);
assign(output,'darb.out'); settextbuf(output,b2); rewrite(output);
readln(n);
for i:=1 to n do lda[i]:=nil;
for i:=1 to n do viz[i]:=0;
while not seekeof do begin
readln(a,b);
add(a,lda[b]);
add(b,lda[a]);
end;
d[1]:=0;
dfs(1);
for i:=1 to n do viz[i]:=0;
D[nod1]:=1;
max:=0;
dfs(nod1);
writeln(D[nod1]);
close(output);
end.