Pozdrav svima!
Imam jedan problem za zadatkom koji pronalazi mostove u grafu: deluje da je dobro napisan, ali ipak postoji greska jer ne vraca nikakav rezultat. Bila bih zahvalna ako neko moze da pogleda kod i javi ako uoci gresku...Hvala
program mostovi;
var e:array [1..100,1..100] of boolean;
d,l,otac,odc,doc:array [1..100] of integer;
bio:array [1..100] of boolean;
i,j,n,m,a,b,nmostova,t:integer;
function Art(st:integer):integer;
var i,k,q:integer;
begin
bio[st]:=true;
inc(t);
l[st]:=t;
d[st]:=t;
k:=0;
for i:=1 to n do
if (i<>st) and (e[st,i]) then
begin
if not(bio) then
begin
otac:=st;
k:=k+1;
q:=Art(i);
if (l > d[st]) then
begin
inc(nmostova);
odc[nmostova]:=st;
doc[nmostova]:=i;
end;
if l<l[st] then l[st]:=l;
end
else
if (i<>otac[st]) then
if d<l[st] then l[st]:=d;
end;
Art:=k;
end;
begin
fillchar(bio,sizeof(bio),false);
fillchar(d,sizeof(d),0);
fillchar(l,sizeof(l),0);
fillchar(otac,sizeof(otac),0);
fillchar(odc,sizeof(odc),0);
fillchar(doc,sizeof(doc),0);
read(n,m);
for i:=1 to m do
begin
read(a,b);
e[a,b]:=true;
e[b,a]:=true;
end;
nmostova:=0;
t:=0;
otac[1]:=-1;
a:=art(1);
writeln('mostovi su grane izmedju cvorova:');
for i:=1 to nmostova do
writeln(odc,' ',doc);
end.
Unosi se n-broj grana, m-broj covorova, a u petlji susedi(a i b) na svakoj grani.
Imam jedan problem za zadatkom koji pronalazi mostove u grafu: deluje da je dobro napisan, ali ipak postoji greska jer ne vraca nikakav rezultat. Bila bih zahvalna ako neko moze da pogleda kod i javi ako uoci gresku...Hvala
program mostovi;
var e:array [1..100,1..100] of boolean;
d,l,otac,odc,doc:array [1..100] of integer;
bio:array [1..100] of boolean;
i,j,n,m,a,b,nmostova,t:integer;
function Art(st:integer):integer;
var i,k,q:integer;
begin
bio[st]:=true;
inc(t);
l[st]:=t;
d[st]:=t;
k:=0;
for i:=1 to n do
if (i<>st) and (e[st,i]) then
begin
if not(bio) then
begin
otac:=st;
k:=k+1;
q:=Art(i);
if (l > d[st]) then
begin
inc(nmostova);
odc[nmostova]:=st;
doc[nmostova]:=i;
end;
if l<l[st] then l[st]:=l;
end
else
if (i<>otac[st]) then
if d<l[st] then l[st]:=d;
end;
Art:=k;
end;
begin
fillchar(bio,sizeof(bio),false);
fillchar(d,sizeof(d),0);
fillchar(l,sizeof(l),0);
fillchar(otac,sizeof(otac),0);
fillchar(odc,sizeof(odc),0);
fillchar(doc,sizeof(doc),0);
read(n,m);
for i:=1 to m do
begin
read(a,b);
e[a,b]:=true;
e[b,a]:=true;
end;
nmostova:=0;
t:=0;
otac[1]:=-1;
a:=art(1);
writeln('mostovi su grane izmedju cvorova:');
for i:=1 to nmostova do
writeln(odc,' ',doc);
end.
Unosi se n-broj grana, m-broj covorova, a u petlji susedi(a i b) na svakoj grani.
Poslednja izmena: