道路和航線

2022-04-28 18:06:16 字數 1955 閱讀 6623

試題描述

farmer john 正在乙個新的銷售區域對他的牛奶銷售方案進行調查。他想把牛奶送到 t (1≤t≤2.5×10^4)個城鎮 ,編號為 1 到 t。這些城鎮之間通過 r 條道路(編號為 1 到 r)和 p 條航線(編號為 1 到 p)連線。每條道路 i 或者航線 i 連線城鎮 ai到 bi,花費為 ci。

對於道路,0≤ci≤104,然而航線的花費很神奇,花費 ci可能是負數。道路是雙向的,可以從 ai到 bi,也可以從 bi到 ai,花費都是

ci。然而航線與之不同,只可以從 ai到 bi。

事實上,由於最近恐怖主義太囂張,為了社會和諧,出台了一些政策保證:如果有一條航線可以從 ai到

bi,那麼保證不可能通過一些道路和航線從 bi回到 ai。由於 fj 的奶牛世界公認十分給力,他需要運送奶牛到每乙個城鎮。他想找到從傳送中心城鎮 s

把奶牛送到每個城鎮的最便宜的方案,或者知道這是不可能的。

輸入第一行為四個空格隔開的整數:t,r,p,s;

第二到第 r+1 行:三個空格隔開的整數(表示一條道路):ai,bi和 ci;

第 r+2 到 r+p+1行:三個空格隔開的整數(表示一條航線):ai,bi和 ci。

輸出輸出 t 行,第 i 行表示到達城鎮 i 的最小花費,如果不存在輸出 no path。

輸入示例

6 3 3 4 

1 2 5 

3 4 5 

5 6 10 

3 5 -100 

4 6 -100 

1 3 -10

輸出示例

no path 

no path 

5 0 

-95 

-100

其他說明

樣例說明

一共六個城鎮。在 1 和 2,3 和 4,5 和 6 之間有道路,花費分別是 5,5,10。同時有三條航線:3→5,4→6 和 1→3,花費分別是 −100,−100,−10。fj 的中心城鎮在城鎮 4。fj 的奶牛從 4 號城鎮開始,可以通過道路到達 3 號城鎮。然後他們會通過航線達到 5 和 6 號城鎮。但是不可能到達 1 和 2 號城鎮。

資料範圍與提示

對於全部資料,1≤t≤2.5×10^4,1≤r,p≤5×10^4,1≤ai,bi,s≤t。保證對於所有道路,0≤ci≤10^4,對於所有航線,−10^4≤ci≤10^4。

乙個很明顯的板子題,spfa要加一點優化,否則會t

具體的優化被稱作slf:

利用乙個雙端佇列,比較即將插入隊首的和隊首的dis值,如果比隊首小,就加到隊首,否則直接放到隊尾

可以減少一些無用的狀態

下面給出**

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

intrd()

void write(int

x)int head[1000006],nxt[25001*6],to[25001*6],v[25001*6

];int

t,n,m,s;

int total=0

;void add(int x,int y,int

z)int book[250001

];int dis[250001

];deque

q;void spfa()//

spfa模板 }}

}return;}

intmain()

for(int i=1;i<=m;i++)//

讀入航線

for(int i=1;i<=t;i++) dis[i]=1299999999

; spfa();

for(int i=1;i<=t;i++)

return0;

}

道路和航線

題目描述 一張圖,有由t個節點,r條雙向邊和p條單向邊組成,每條邊有邊權且可能存在負權,求能否從s到達每個節點並且輸出最小花費。思路首先第一想法,把這張圖建出來,在跑一遍spfa即可,然而它顯然被卡了,不過似乎可以用雙端佇列優化水過去。接下就是正解。我們考慮對於所有的道路,都是正權,我們可以用dij...

道路和航線 題解

題目描述 farmer john 正在乙個新的銷售區域對他的牛奶銷售方案進行調查。他想把牛奶送到 t 個城鎮 編號為 1 到 t 這些城鎮之間通過 r 條道路 編號為 1 到 r 和 p 條航線 編號為 1 到 p 連線。每條道路 i 或者航線 i 連線城鎮 a i 到 b i 花費為 c i 對於...

道路與航線

農夫約翰正在乙個新的銷售區域對他的牛奶銷售方案進行調查。他想把牛奶送到t個城鎮,編號為1 t。這些城鎮之間通過r條道路 編號為1到r 和p條航線 編號為1到p 連線。每條道路 ii 或者航線 ii 連線城鎮ai到bi,花費為ci。對於道路,0 ci 10,0000 ci 10,000 然而航線的花費...