在郊區有 n 座通訊基站,p 條 雙向 電纜,第 i 條電纜連線基站ai和bi。
特別地,1 號基站是通訊公司的總站,n 號基站位於一座農場中。
現在,農場主希望對通訊線路進行公升級,其中公升級第 i 條電纜需要花費li。
**公司正在舉行優惠活動。
農產主可以指定一條從 1 號基站到 n 號基站的路徑,並指定路徑上不超過 k 條電纜,由**公司免費提供公升級服務。
農場主只需要支付在該路徑上剩餘的電纜中,公升級**最貴的那條電纜的花費即可。
求至少用多少錢可以完成公升級。
輸入格式
第1行:三個整數n,p,k。
第2…p+1行:第 i+1 行包含三個整數ai,bi,li。
輸出格式
包含乙個整數表示最少花費。
若1號基站與n號基站之間不存在路徑,則輸出」-1」。
資料範圍
0≤k分層圖,我寫的第一道不是板子題的圖論,必須寫個部落格記錄一下,分層圖之前寫過一道題,但當時沒有學,用另外一種方法做的。
分層圖不多解釋了,改了一下迪傑斯特拉,覺得過不了,但交上去還是過了。
#include
#include
#include
#include
using
namespace std;
typedef pair<
int,
int>p;
const
int inf =
0x3f3f3f3f
;const
int n =
1e6+
500;
int n, m, k;
vectorg[n]
;int d[n]
;void
add(
int u,
int v,
int w)
void
dijkstra
(int st)
;memset
(d,inf,
sizeof
(d))
; d[st]=0
; priority_queue,greater>que;
que.
push(p
(0,st));
while
(!que.
empty()
)}}}
intmain()
}for
(int i=
1; i<=k; i++
)add
(i*n,
(i+1
)*n,0)
;dijkstra(1
);if(d[
(k+1
)*n]
==inf)
puts
("-1");
else
printf
("%d"
,d[(k+1)
*n])
;return0;
}
340 通訊線路(二分答案 spfa)
在郊區有 n 座通訊基站,p 條 雙向 電纜,第 i 條電纜連線基站ai和bi。特別地,1 號基站是通訊公司的總站,n 號基站位於一座農場中。現在,農場主希望對通訊線路進行公升級,其中公升級第 i 條電纜需要花費li。公司正在舉行優惠活動。農產主可以指定一條從 1 號基站到 n 號基站的路徑,並指定...
COGS T 7 通訊線路
輸入檔案 mcst.in輸出檔案 mcst.out簡單對比 時間限制 1.5 s 記憶體限制 128 mb 問題描述 假設要在n個城市之間建立通訊聯絡網,則連通n個城市只需要n 1條線路。這時,如何在最少經費的前提下建立這個通訊網。在每兩個城市之間都可以設定 條線路,相應地都要付出一定的經濟代價。n...
POJ 3662 通訊線路
摘要 簡單來講就是在無向圖上求出一條從1到n的路徑,使路徑上第k 1大的邊權盡量小。第k大的盡量小,這種表述就容易讓人想到二分。那麼我們只要把權值大於mid的路徑權值設為1,小於mid的置為0,求1到n的最短路是否不超過n即可。include include include include incl...