Sunteți pe pagina 1din 5

Laborator 5

Enuntul problemei:
Fiind dat un graf G pentru care se cunosc: numarul varfurilor,valoarea fiecarui arc
si lista muchiilor intr-o ordine oarecare.Sa se determine un arbore al sau de pondere
minima cu algoritmul lui Krusal nr!
"etoda de re#olvare:
$entru graful dat cunosc:
n=numarul varfurilor;
m=numarul muchiilor;
valorile arcelor si lista muchiilor in ordine oarecare a valorilor
arcelor

program %rbore$artial&e$ondere"inima'
uses crt'
const (r"a)*f+,'
const -nf+.//'
t0pe Element+record11o muchie o repr ca pe un element care e o inregistrare cu trei
campuri
val:integer'11valoarea muchiei'
ord:integer'11ordinea varfurilor in arcul obtinut din muchie
activ:boolean'11daca muchia e activa
end'
t0pe "atrice+arra02...(r"a)*f,...(r"a)*f3 of Element'
t0pe *ector+arra02...(r"a)*f3 of integer'
function "inim4",(:integer5:integer'
begin
if "6+( then "inim:+"
else "inim:+('
end'
procedure 7itElem4var E:Element'ord:integer5'
begin
8rite49*aloarea muchiei este :95'readln4E.val5'
E.ord:+ord'
e.activ:+true'
end'
procedure 7it"at4var %:"atrice'var n:integer'var m:integer5'
var i,:,succ,contor:integer'
begin
m:+/'
repeat
8rite49&ati numarul de varfuri ;95'readln4n5'
until 4n;+.5 and 4n6+(r"a)*f5'
for i:+. to n do
for ::+. to n do
begin
if i+: then %2i,:3.val:+/
else %2i,:3.val:+-nf'
%2i,:3.activ:+false'
%2i,:3.ord:+-.'
end'
for i:+. to n do
begin
clrscr'
contor:+/'
8riteln49&ati perechile lui 9,i,94pt a termina introduceti / 595'
repeat
contor:+contor<.'
repeat
8rite49$erechea nr 9,contor,9 al lui 9,i,9 este:95'
read4succ5'
until 4succ;+/5 and 4succ6+n5 and 4succ6;i5'
if succ6;/ then
begin
m:+m<.'
7itElem4%2i,succ3,m5'
%2succ,i3:+%2i,succ3'
end'
until succ+/'
end'
end'
procedure =ip"at4%:"atrice'n:integer5'
var i,::integer'
begin
for i:+. to n do
begin
for ::+. to n do
begin
if 4%2i,:3.activ5 then 8rite49>9:!5
else 8rite 49-9:!5'
end'
8riteln'
end
end'
procedure ="inus?4var %:"atrice'n,:integer5'
var i,::integer'
gasit:boolean'
begin
gasit:+false'
i:+.'
8hile 44i6+n5 and 4gasit+false55 do
begin
::+.'
8hile 44:6+n5 and 4gasit+false55 do
begin
if %2i,:3.ord+ then
begin
%2i,:3.activ:+false'
%2:,i3.activ:+false'
gasit:+true'
end'
::+:<.'
end'
i:+i<.'
end'
end'
procedure -nsert4var *:*ector'var nv:integer'elem:integer5'
var i:integer'
pus:boolean'
begin
i:+.'
pus:+false'
8hile 4i6+nv5 do
begin
if *2i3+elem then
begin
i:+nv'
pus:+true'
end'
i:+i<.'
end'
if 4not pus5 then
begin
*2i3:+elem'
nv:+nv<.'
end'
end'
procedure %lege%7omp7one)a4%:"atrice'var *:vector'var na,nv:integer5'
var i,:,li,lf:integer'
begin
nv:+.'
li:+.'
lf:+.'
*2.3:+.'
i:+.'
repeat
for i:+li to lf do
for ::+. to na do
if 44%2*2i3,:3.val6;-nf5 and 4%2*2i3,:3.activ55 then -nsert4*,nv,:5'
li:+lf<.'
lf:+nv'
until lf6li'
for i:+nv<. to na do *2i3:+/'
end'
function E)ista-nSir4*:vector'nv,elem:integer5:boolean'
var i:integer'
e)ista:boolean'
begin
e)ista:+false'
i:+.'
8hile 44i6+nv5 and 4not e)ista55 do
begin
if *2i3+elem then e)ista:+true'
i:+i<.'
end'
E)ista-nSir:+e)ista'
end'
procedure &etermina%dauga*"in4var %:"atrice'*:*ector'na,nv:integer5'
var i,:,i.,:.,oldmin,min:integer'
prim:boolean'
begin
prim:+true'
for i:+. to nv do
for ::+. to na do
if 44*2i36;:5 and 4not E)ista-nSir4*,nv,:555then
if prim then
begin
min:+%2*2i3,:3.val'
oldmin:+min'
i.:+*2i3'
:.:+:'
prim:+false'
end
else
begin
min:+"inim4min,%2*2i3,:3.val5'
if min6;oldmin then
begin
i.:+*2i3'
:.:+:'
oldmin:+min'
end'
end'
%2i.,:.3.activ:+true'
%2:.,i.3.activ:+true'
end'
procedure %rb&e$ond"in4var %:"atrice'na,m:integer5'
var ,nv:integer'
*:*ector'
begin
for :+. to m do
begin
="inus?4%,na,5'
%lege%7omp7one)a4%,*,na,nv5'
if nv6;na then
&etermina%dauga*"in4%,*,na,nv5'
end'
end'
var "at*al%rc:matrice'
(r*f,(r%rc,(*:integer'
*:*ector'
test:boolean'
@EG-(
clrscr'
7it"at4"at*al%rc,(r*f,(r%rc5'
=ip"at4"at*al%rc,(r*f5'
8riteln49%pasa orice tasta A95'
reade0'
clrscr'
%rb&e$ond"in4"at*al%rc,(r*f,(r%rc5'
8riteln49Bepre#entarea matriciala a arborelui de pondere minima este :95'
=ip"at4"at*al%rc,(r*f5'
8riteln49%pasa orice tasta A95'
reade0'
E(&.

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