不知道為什么,這道題的代碼總是對不了,哪位大神幫忙看看?
P1557 熱浪 (SPFA)
題目描述 Description
德克薩斯純樸的民眾們這個夏天正在遭受巨大的熱浪!!!他們的德克薩斯長角牛吃起來不錯,可是他們并不是很擅長生產富含奶油的乳製品。Farmer John此時以先天下之憂而憂,后天下之樂而樂的精神,身先士卒地承擔起向德克薩斯運送大量的營養冰涼的牛奶的重任,以減輕德克薩斯人忍受酷暑的痛苦。
FJ已經研究過可以把牛奶從威斯康星運送到德克薩斯州的路線。這些路線包括起始點和終點先一共經過T (1 <= T <= 2,500)個城鎮,方便地標號為1到T。除了起點和終點外地每個城鎮由兩條雙向道路連向至少兩個其它地城鎮。每條道路有一個通過費用(包括油費,過路費等等)。
給定一個地圖,包含C (1 <= C <= 6,200)條直接連接2個城鎮的道路。每條道路由道路的起點Rs,終點Re (1 <= Rs <= T; 1 <= Re <= T),和花費(1 <= Ci <= 1,000)組成。求從起始的城鎮Ts (1 <= Ts <= T)到終點的城鎮Te(1 <= Te <= T)最小的總費用。
輸入描述 Input Description
第一行: 4個由空格隔開的整數: T, C, Ts, Te
第2到第C+1行: 第i+1行描述第i條道路。有3個由空格隔開的整數: Rs, Re和Ci
輸出描述 Output Description
一個單獨的整數表示從Ts到Te的最小總費用。資料保證至少存在一條道路。
樣例輸入 Sample Input
7 11 5 4
2 4 2
1 4 3
7 2 2
3 4 3
5 7 5
7 3 3
6 1 1
6 3 4
2 4 3
5 6 3
7 2 1
樣例輸出 Sample Output
7
代碼:
var
a:array [1..2500,1..2500] of longint;
f:array [1..6200] of boolean;
d:array [1..6200] of longint;
i,j,k,m,n,x,y,z,mn,b,l:longint;
begin
fillchar(f,sizeof(f),true);
fillchar(d,sizeof(d),100);
fillchar(a,sizeof(a),100);
readln(n,m,k,b);
for i:=1 to m do
begin
readln(x,y,z);
a[x,y]:=z;
a[y,x]:=z;
end;
d[k]:=0;
f[k]:=false;
for i:=1 to n-1 do
begin
for j:=1 to n do
if (f[j]) and (d[j]>a[k,j]+d[k]) then
begin
d[j]:=a[k,j]+d[k];
end;
mn:=10000;
for j:=1 to n do
if (mn>d[j]) and (f[j]) then mn:=d[j];
for j:=1 to n do
if (d[j]=mn) and (f[j]) then
begin
f[j]:=false;
k:=j;
break;
end;
end;
writeln(d[k]);
end.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/93152.html
標籤:語言基礎/算法/系統設計
上一篇:fastreport合計問題
