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