洛谷 P1629 郵遞員送信

2021-07-27 19:58:46 字數 1338 閱讀 6021

題目大意:

求乙個郵遞員把信分別送到2~n的最短路,與他回到節點的最短路之和。

dijkstra:

題目是無向圖並且要求求出來回最短路之和。

2.用dijkstra求1到其它點的最短路,再將每條邊反向再求一次1到其它點的最短路,然後相加。

時間複雜度:o(n^2)

var

m:array [0..1001] of boolean;

a,b:array [0..1001,0..1001] of longint;

f:array [0..1001] of longint;

i,j,t,c,p,q,w,ans:longint;

procedure

dijkstra;

var i,j,u,min:longint;

begin

fillchar(m,sizeof(m),false);

for i:=1

to t do f[i]:=a[1,i];

repeat

u:=0; min:=maxlongint;

for i:=1

to t do

if (not m[i]) and (f[i]then

begin

u:=i;

min:=f[i];

end;

if u<>0

then

begin

m[u]:=true;

for i:=1

to t do

if (not m[i]) and (f[u]+a[u,i]then f[i]:=f[u]+a[u,i];

end;

until u=0;

for i:=2

to t do ans:=ans+f[i];

end;

begin

readln(t,c);

for i:=1

to t do

for j:=1

to t do

begin

a[i,j]:=maxlongint div

3; b[i,j]:=a[i,j];

end;

for i:=1

to c do

begin

readln(p,q,w);

if wthen a[p,q]:=w;

if wthen b[q,p]:=w;

end;

dijkstra;

a:=b;

dijkstra;

writeln(ans);

end.

洛谷P1629 郵遞員送信

有乙個郵遞員要送東西,郵局在節點1.他總共要送n 1樣東西,其目的地分別是2 n。由於這個城市的交通比較繁忙,因此所有的道路都是單行的,共有m條道路,通過每條道路需要一定的時間。這個郵遞員每次只能帶一樣東西。求送完這n 1樣東西並且最終回到郵局最少需要多少時間。輸入格式 第一行包括兩個整數n和m。第...

洛谷 P1629 郵遞員送信

這個裡面判斷的東西比較多 實際上不需要這麼多的,資料給的很水 完全可以加上重邊自環什麼的 而且這道題完全暴力做n次dij 3 10 7比較危險 比較優化的方法是 第一遍dij算出郵遞員到每個地方的距離 第二遍反向建邊,橫容易看出郵遞員到每個地方的距離都是每個地方到郵遞員的距離 這種方法就可以把單終點...

洛谷P1629 郵遞員送信

題目戳 題目描述 有乙個郵遞員要送東西,郵局在節點1.他總共要送n 1樣東西,其目的地分別是2 n。由於這個城市的交通比較繁忙,因此所有的道路都是單行的,共有m條道路,通過每條道路需要一定的時間。這個郵遞員每次只能帶一樣東西。求送完這n 1樣東西並且最終回到郵局最少需要多少時間。輸入輸出格式 輸入格...