(最短路 二分) cogs 147

2022-05-13 17:41:04 字數 1388 閱讀 9978

★★☆   輸入檔案:phoneline.in輸出檔案:phoneline.out簡單對比

時間限制:1 s   記憶體限制:16 mb

farmer john打算將**線引到自己的農場,但電信公司並不打算為他提供免費服務。於是,fj必須為此向電信公司支付一定的費用。

fj的農場周圍分布著n(1 <= n <= 1,000)根按1..n順次編號的廢棄的**線桿,任意兩根**線桿間都沒有**線相連。一共p(1 <= p <= 10,000)對**線桿間可以拉**線,其餘的那些由於隔得太遠而無法被連線。

第i對**線桿的兩個端點分別為a_i、b_i,它們間的距離為l_i (1 <= l_i <= 1,000,000)。資料中保證每對最多隻出現1次。編號為1的**線桿已經接入了全國的**網路,整個農場的**線全都連到了編號 為n的**線桿上。也就是說,fj的任務僅僅是找一條將1號和n號**線桿連起來的路徑,其餘的**線桿並不一定要連入**網路。

經過談判,電信公司最終同意免費為fj鏈結k(0 <= k < n)對由fj指定的**線桿。對於此外的那些**線,fj需要為它們付的費用,等於其中最長的**線的長度(每根**線僅鏈結一對**線桿)。如果需要連 結的**線桿不超過k對,那麼fj的總支出為0。

請你計算一下,fj最少需要在**線上花多少錢。

程式名: phoneline

輸入格式:

輸入樣例 (phoneline.in):

5 7 1

1 2 5

3 1 4

2 4 8

3 2 3

5 2 9

3 4 7

4 5 6

輸入說明:

一共有5根廢棄的**線桿。**線桿1不能直接與**線桿4、5相連。**線桿5不能直接與**線桿1、3相連。其餘所有**線桿間均可拉**線。電信公司可以免費為fj鏈結一對**線桿。

輸出格式:

輸出樣例 (phoneline.out):

4
輸出說明:

fj選擇如下的鏈結方案:1->3;3->2;2->5,這3對**線桿間需要的**線的長度分別為4、3、9。fj讓電信公司提供那條長度為9的**線,於是,他所需要購買的**線的最大長度為4。

#include#include#include#include#include#include#include#include#include#define inf 100000000

using namespace std;

vectore[1005],w[1005];

int n,m,k,dist[1005],vis[1005];

bool spfa(int mid)

printf("%d\n",ans);

return 0;

}

二分 最短路 dijkstra

洛谷p1462 通往奧格瑞瑪的道路 對於我這個只是聽過二分但是從來沒有寫過二分的人來說,看到這個題目時是懵逼的,啥是求最多一次收費的最小值,只能回頭開始學習二分,在一下幾種情況下,均可以用二分來解決。1.從有序陣列中查詢某個值。2.假定乙個解並判斷是否可行 3.最大化最小值 4.最大化平均值 這個題...

csu1307 最短路 二分

time limit 1 sec memory limit 128 mb submit 392 solved 68 submit status web board alice想要從城市a出發到城市b,由於alice最近比較窮 不像集訓隊陳興老師是個rich second 所以只能選擇做火車從a到b。...

bzoj 1614 二分 最短路

題意 找一條將1號和n號 線桿連起來的路徑,其餘的 線桿並不一定要連入 網路。電信公司最終同意免費為fj鏈結k對由fj指定的 線桿。對於此外的那些 線,要求最大邊最小 明顯的二分答案,因為只要求1號和n號連起來,其他點不要求,所以跑最短路即可 對於二分出mid,我們check時,找到1號到n號的最短...