小 X 的道路修建

2022-07-15 01:33:11 字數 1344 閱讀 7263

因為一場不小的**, y 省 n 個城市之間的道路都損壞掉了,省長希望小 x 將城市之間的道路重 修一遍。 很多城市之間的地基都被**破壞導致不能修路了,因此可供修建的道路只有 m 條。因為施工隊伍 有限,省長要求用盡量少的道路將所有的城市連通起來,這樣施工量就可以盡量少。不過,省長為了表 示自己的公正無私,要求在滿足上述條件的情況下,選擇一種方案,使得該方案中最貴道路的**和最 便宜道路的**的差值盡量小,即使這樣的方案會使總價提公升很多也沒關係。 小 x 現在手忙腳亂,希望你幫幫他。

第一行包含兩個整數 n; m。 接下來 m 行,每行包含三個整數 a; b; c,表示城市 a; b 之間可以修建一條**為 c 的無向道路。

若存在合法方案,則第一行包含乙個整數,表示最貴道路的**和最便宜道路的**的最小差值; 否則第一行包含乙個整數 −1。

5 10

1 2 9384

1 3 887

1 4 2778

1 5 6916

2 3 7794

2 4 8336

2 5 5387

3 4 493

3 5 6650

4 5 1422

1686

lct 裸題。

#pragma gcc optimize("-ofast")#include

#define n 910007

using

namespace

std;

int n,m,ans=int_max,ti;

void read(int &x)

struct

edge

}e[n];

namespace

snow

void rev(int

x)void pushdown(intx)}

void pushup(int

x)void rotate(int

x)void splay(int

x) rotate(x);

}}void access(int

x) }

void beroot(int

x)int root(int

x) void link(int x,int

y)void cut(int x,int

y) void

sol()

else

while (usd[to]) to++;

if (ti==n-1) ans=min(ans,e[i].z-e[to].z);

}printf(

"%d\n

",ans==int_max?-1

:ans);}}

signed main ()

JZOJ 3806 小X 的道路修建

因為一場不小的 y 省n 個城市之間的道路都損壞掉了,省長希望小x 將城市之間的道路重修一遍。很多城市之間的地基都被 破壞導致不能修路了,因此可供修建的道路只有m 條。因為施工隊伍有限,省長要求用盡量少的道路將所有的城市連通起來,這樣施工量就可以盡量少。不過,省長為了表示自己的公正無私,要求在滿足上...

Jzoj3806 小X 的道路修建

給你乙個圖,求乙個最大邊和最小邊差值最小的生成樹 首先我們可以列舉最小邊,每次跑乙個最小生成樹即可 但是這樣會超時,我們考慮優化 採用最優性剪枝,假設我們當前樹中的最小邊是i,當前邊是j,當前最優答案是ans,那麼對於所有邊k使得length j length k ans的邊在列舉最小邊的時候可以直...

2017 5 11 道路修建 思考記錄

這個線段樹一眼秒了 主要是有前面的思考經驗 就是維護兩個列對應線段上的形態。比較好想的 但資料結構題有個特點 使你知道結構也不會做 會做也會很大概率爆零.所以資料結構題必須 小資料 特殊資料 對拍!不然怎麼掛的都不知道 敲 錯 調 查 調 搞了乙個上午 這個題用線段樹維護 乙個最小值 合併時需要考慮...