DULICH

Màu nền
Font chữ
Font size
Chiều cao dòng

program TimDuongDiCucTieu;

const

max = 20;

maxC = 20 * 100 + 1; {+8}

var

C: array[1..max, 1..max] of Integer;{Ma tran chi phi}

X, BestWay: array[1..max + 1] of Integer; {X do thi cac kha nang, BestWay de ghi nhan nghiem}

T: array[1..max + 1] of Integer; {Ti de luu chi phi di tu X1 den Xi}

Free: array[1..max] of Boolean; {Free de danh dau, Free = True neu chua di qua tp i}

m, n: Integer;

MinSpending: Integer;{Chi phi hanh trinh toi uu}

procedure Nhap;

var

i, j, k: Integer;

begin

ReadLn(n, m);

for i := 1 to n do

for j := 1 to n do

if i = j then C[i, j] := 0 else C[i, j] := maxC; {Khoi tao bang chi phi ban dau}

for k := 1 to m do

begin

ReadLn(i, j, C[i, j]);

C[j, i] := C[i, j]; {Chi phi nhu nhau trên 2 chieu}

end;

end;

procedure Khoitao; {Khoi tao}

begin

FillChar(Free, n, True);

Free[1] := False; {Cac thanh pho la chua di qua ngoai tru thanh pho 1}

X[1] := 1; {Xuat phat tu thanh pho 1}

T[1] := 0; {Chi phi tai thanh pho xuat phat la 0}

MinSpending := maxC;

end;

procedure Thudi(i: Integer); {Thu cac cach chon xi}

var

j: Integer;

begin

for j := 2 to n do {Thu cac thanh pho tu 2 den n}

if Free[j] then {Neu gap thanh pho chua di qua}

begin

X[i] := j; {Thu di}

T[i] := T[i - 1] + C[x[i - 1], j]; {Chi phi := Chi phi buoc truoc + chi phi duong di truc tiep}

if T[i] < MinSpending then {Hien nhien neu co dieu nay thi C[x[i-1],j]< +8 roi }

if i < n then {Neu chua den duoc xn}

begin

Free[j] := False; {Ðanh dau thành pho vua thu}

Try(i + 1); {Tim cac kha nang chon xi+1}

Free[j] := True; {Bo dánh dau}

end

else

if T[n] + C[x[n], 1] < MinSpending then {Tu xn quay lai 1 van ton chi phi it hon truoc}

begin {Cap nhat BestConfig}

BestWay := X;

MinSpending := T[n] + C[x[n], 1];

end;

end;

end;

procedure InKetqua;

var

i: Integer;

begin

if MinSpending = maxC then WriteLn('Khong ton tai duong di')

else

for i := 1 to n do Write(BestWay[i], '->');

WriteLn(1);

WriteLn('Chi phi: ', MinSpending);

end;

begin

Assign(Input, 'vao.inp'); Reset(Input);

Assign(Output,'ra.out'); Rewrite(Output);

Nhap;

KhoiTao;

Thudi(2);

InKetqua;

Close(Input); Close(Output);

end.

Bạn đang đọc truyện trên: Truyen2U.Pro