洛谷 P1629 郵遞員送信

2022-02-14 17:23:02 字數 1136 閱讀 8609

這個裡面判斷的東西比較多

實際上不需要這麼多的,資料給的很水

完全可以加上重邊自環什麼的

而且這道題完全暴力做n次dij(3*10^7比較危險)

比較優化的方法是:

第一遍dij算出郵遞員到每個地方的距離

第二遍反向建邊,橫容易看出郵遞員到每個地方的距離都是每個地方到郵遞員的距離

這種方法就可以把單終點最短路徑轉變成單源最短路徑

另外說明一下,因為跑兩遍dij,為了便於區分分開寫的,變數名最後是1的是第一次dij有關,為2 則是第二次dij

上**

#include#include

#include

#include

#include

using

namespace

std;

intn,m;

int h1[1926],h2[1926

];

ints1,s2;

struct

edge;

int v1[1926],v2[1926

];int d1[1926],d2[1926

];edge e1[

200860],e2[200860

];int looker1[1020][1020]; //

looker是得到i,j邊距離最小值

int looker2[1020][1020

];int l1[1020][1020]; //

l1是標記i,j是否走過

int l2[1020][1020

];void addedge1(int next,int to,int

dis)

void addedge2(int next,int to,int

dis)

void dij1(int

start)}}

}void dij2(int

start)}}

}int

main()

int tot=0

; dij1(1);

dij2(1);

for(i=1;i<=n;i++)

printf("%d

",tot);

return0;

}

洛谷 P1629 郵遞員送信

題目大意 求乙個郵遞員把信分別送到2 n的最短路,與他回到節點的最短路之和。dijkstra 題目是無向圖並且要求求出來回最短路之和。2.用dijkstra求1到其它點的最短路,再將每條邊反向再求一次1到其它點的最短路,然後相加。時間複雜度 o n 2 var m array 0.1001 of b...

洛谷P1629 郵遞員送信

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

洛谷P1629 郵遞員送信

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