多源最短路徑問題

2021-08-07 05:33:09 字數 986 閱讀 4919

problem description

tonyy是乙個喜歡到處浪的男人,他的夢想是帶著蘭蘭姐姐浪遍**的各個角落,不過在此之前,他需要做好規劃。

現在他的手上有乙份**地圖,上面有n個城市,m條交通路徑,每條交通路徑都是單行道。他已經預先規劃好了一些點作為旅遊的起點和終點,他想選擇其中乙個起點和乙個終點,並找出從起點到終點的一條路線親身體驗浪的過程。但是他時間有限,所以想選擇耗時最小的,你能告訴他最小的耗時是多少嗎?

input

包含多組測試資料。

輸入第一行包括兩個整數n和m,表示有n個地點,m條可行路徑。點的編號為1 - n。

接下來m行每行包括三個整數i, j, cost,表示從地點i到地點j需要耗時cost。

接下來一行第乙個數為s,表示可能的起點數,之後s個數,表示可能的起點。

接下來一行第乙個數為e,表示可能的終點數,之後e個數,表示可能的終點。

0小於s, e≤n≤100000,0<m≤100000,0<cost≤100。

output

輸出他需要的最短耗時。

sample input

4 4

1 3 1

1 4 2

2 3 3

2 4 4

2 1 2

2 3 4

sample output

1#include#include#include#includeusing namespace std;

const int maxn=100000+10;

const int inf=0x3f3f3f3f;

struct node

e[maxn];

int d[maxn],first[maxn],inq[maxn],a[maxn],b[maxn];

int n,m,len,st_num,ed_num;

void spfa()}}

}int ans=inf;

for(int i=0;i

多源最短路徑

可以簡單的通過執行 v 次單源最短路徑演算法來解決,每次使用乙個不同的結點作為源結點 多數演算法採用鄰接矩陣來表示圖,因此 演算法的輸入為乙個n n的矩陣w,代表乙個有n個結點的有向圖g v,e 的邊的權重 wij 0 若i j 權重 若i j,且 i,j 屬於e inf 若i j,且 i,j 不屬...

多源最短路徑問題 floyd warshall

儲存圖如下 的演算法思想 該段 的基本思想是 最開始只允許1號頂點進行中轉,接下來只允許經過1號和2號頂點進行中轉.允許經過1 n號所有頂點進行中轉,求任意兩個點之間的最短距離用一句話概括,就是從i號頂點到j號頂點只經過前k號點的最短路徑 floyd warshall核心演算法 5行 for k 1...

多源最短路徑問題(bfs)

公司的程式設計師不夠用了,決定把產品經理都轉變為程式設計師以解決開發時間長的問題。在給定的矩形網格中,每個單元格可以有以下三個值之一 每分鐘,任何與程式設計師 在4個正方向上 相鄰的產品經理都會變成程式設計師。返回直到單元格中沒有產品經理為止所必須經過的最小分鐘數。如果不可能,返回 1。以下是乙個4...