Đây là ctrình con theo kiểu đệ quy của mình cho bài toán http://vnoi.info/problems/show/ROADS/ 

Nhưng lại không ra KQuả theo bài test, mong các bạn có thể xem và sửa giúp

Chú thích:

C là mảng chứ các thành phố đã đi qua, h là chỉ số của mảng.

Z,X lần lượt là độ dài đã đi và số tiền phải trả, k là số tiền lớn nhất có thể dùng.

S là thành phố hiện tại, i là thành phố dự tính sẽ đi, ktra là hàm boolean để xem thành phố i có thuộc mảng C hay không.

Min là độ dài đường đi ngắn nhất.

 

PROCEDURE roads(s,h,z,x:INTEGER);
BEGIN
    IF s=6 THEN BEGIN
        IF x<k THEN IF z<min THEN min:=z;
    END ELSE
    FOR i:=1 TO n DO       
    IF kt(i)=TRUE THEN IF a[s,i]<>0 THEN
    BEGIN
        c[h]:=s;
        z:=z+a[s,i];x:=x+b[s,i];
        roads(i,h+1,z,x);
    END;
    c[h]:=0;
END;