Sunteți pe pagina 1din 1

muchii:array[1..

200]of record
x,y:byte;
cost:integer;
end;
{g-ul asta ii arborele partial pe care tocmai il construiesti}
function verific_ciclu(x,y:byte;g:graf):boolean;
var ver,coada:array[1..200]of byte;
p,q:byte;
am_ciclu:boolean;
begin
p:=0;q:=1;
am_ciclu:=false;
ver[x]:=1;
coada[1]:=x;
repeat
inc(p);
for i:=1 to n do
if ver[i]=0 then
if g[coada[p],i]=1 then
begin
inc(q);
ver[i]:=1;
coada[q]:=i;
if i=y then am_ciclu:=true;
end;
until p=q;
verific_ciclu:=am_ciclu;
end;
{g-ul e arborele partial ce cost minim facut pana in momentul de fata dar care n
u are bagata muchia (x,y), (*sus la fel*)}
function verific_ciclu(x,y:byte;g:graf):boolean;
var drum:array[1..100,1..100]of byte;
begin
for i:=1 to n do
for j:=1 to n do
drum[i,j]:=g[i,j];
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if drum[i,k]=1 and drum[k,j]=1 then
drum[i,j]:=1;
if drum[x,y]=1 then verific_ciclu:=true
else verific_ciclu:=false;
end;
ordonez_muchii_dupa_cost;
cat timp mai_am_muchii_de_bagat do
begin
iau_muchia_minima;
verific_daca_am_ciclu_in_cazul_in_care_bag_muchia;
{adica verific_cilclu cu capetele muchiei inainte sa bag muchia
, cautand daca cele 2 capete is in aceeasi componenta conexa
in arborele partial facut pana amu}
bag_muchia_daca_pot;
end;

S-ar putea să vă placă și