time limit: 10 sec
memory limit: 259 mb
submit: 528
solved: 173 [
submit][
status][
discuss]
farmer john正在乙個新的銷售區域對他的牛奶銷售方案進行調查。他想把牛奶送到t個城鎮 (1 <= t <= 25,000),編號為1t。這些城鎮之間通過r條道路 (1 <= r <= 50,000,編號為1到r) 和p條航線 (1 <= p <= 50,000,編號為1到p) 連線。每條道路i或者航線i連線城鎮a_i (1 <= a_i <= t)到b_i (1 <= b_i <= t),花費為c_i。對於道路,0 <= c_i <= 10,000;然而航線的花費很神奇,花費c_i可能是負數(-10,000 <= c_i <= 10,000)。道路是雙向的,可以從a_i到b_i,也可以從b_i到a_i,花費都是c_i。然而航線與之不同,只可以從a_i到b_i。事實上,由於最近恐怖主義太囂張,為了社會和諧,出台 了一些政策保證:如果有一條航線可以從a_i到b_i,那麼保證不可能通過一些道路和航線從b_i回到a_i。由於fj的奶牛世界公認十分給力,他需要運送奶牛到每乙個城鎮。他想找到從傳送中心城鎮s(1 <= s <= t) 把奶牛送到每個城鎮的最便宜的方案,或者知道這是不可能的。
* 第1行:四個空格隔開的整數: t, r, p, and s * 第2到r+1行:三個空格隔開的整數(表示一條道路):a_i, b_i 和 c_i * 第r+2到r+p+1行:三個空格隔開的整數(表示一條航線):a_i, b_i 和 c_i
* 第1到t行:從s到達城鎮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
樣例輸入解釋:
一共六個城鎮。在1-2,3-4,5-6之間有道路,花費分別是5,5,10。同時有三條航線:3->5,
4->6和1->3,花費分別是-100,-100,-10。fj的中心城鎮在城鎮4。
no path
no path50
-95-100
樣例輸出解釋:
fj的奶牛從4號城鎮開始,可以通過道路到達3號城鎮。然後他們會通過航線達到5和6號城鎮。
但是不可能到達1和2號城鎮。
wa了無數遍,最終發現bfs算入度的時候沒標記起點,啊啊~~錯的萌萌噠~~
題意:在乙個含有向邊(存在負邊),無向邊的圖中,給你乙個起點,求出起點到所有點的最短路,
有負邊,spfa搞。。超時,堆優化的dijkstra不能處理負邊~~。
思路:由於題目說了,如果有a到b的航線,不會有b到a的航線或道路。就是說不會存在含有 有向邊的環。所以我們把所有的無向邊的點縮點,縮點後會發現此圖變成乙個有向無環圖,對於有向無環圖我們可以top序dp求出起點到每個連通塊的最短路。然後在每個連通塊中用dijkstra求最短路,就行了。
#include#include#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f
#define max 25005
#define mod 10000007
#define clr(a,b) memset((a),(b),sizeof((a)))
#pragma comment(linker, "/stack:102400000,102400000")
#define ul u<<1
#define ur (u<<1)1
using namespace std;
typedef long long ll;
struct edge
};struct node
bool operator <(const node & a) const
void ol(int n)
}int len=plan[u].size();
for(int i=0; idis[u]+w)
--degree[root];
if(degree[root]==0) dp.push(root);}}
}void top_dp(int s)
}void init()
int main()
ol(n);
for(int i=1; i<=p; i++)
bfs(s);
top_dp(s);
for(int i=1; i<=n; i++)
return 0;
}
道路與航線
農夫約翰正在乙個新的銷售區域對他的牛奶銷售方案進行調查。他想把牛奶送到t個城鎮,編號為1 t。這些城鎮之間通過r條道路 編號為1到r 和p條航線 編號為1到p 連線。每條道路 ii 或者航線 ii 連線城鎮ai到bi,花費為ci。對於道路,0 ci 10,0000 ci 10,000 然而航線的花費...
道路與航線(最短路 縮點 拓撲排序)
題目描述 農夫約翰正在乙個新的銷售區域對他的牛奶銷售方案進行調查。他想把牛奶送到t個城鎮,編號為1 t。這些城鎮之間通過r條道路 編號為1到r 和p條航線 編號為1到p 連線。每條道路 i 或者航線 i 連線城鎮ai到bi,花費為ci。對於道路,0 ci 10,000 然而航線的花費很神奇,花費ci...
AcWing 342 道路與航線
農夫約翰正在乙個新的銷售區域對他的牛奶銷售方案進行調查。他想把牛奶送到t個城鎮,編號為1 t。這些城鎮之間通過r條道路 編號為1到r 和p條航線 編號為1到p 連線。每條道路 i 或者航線 i 連線城鎮ai到bi,花費為ci。對於道路,0 ci 10,000 然而航線的花費很神奇,花費ci可能是負數...