給你一個無向帶權連通圖,每條邊是黑色或白色。讓你求一棵最小權的剛好有need條白色邊的生成樹。
題目保證有解。php
給你一個無向帶權連通圖,每條邊是黑色或白色。讓你求一棵最小權的剛好有need條白色邊的生成樹。
題目保證有解。php
第一行V,E,need分別表示點數,邊數和須要的白色邊數。
接下來E行
每行s,t,c,col表示這邊的端點(點從0開始標號),邊權,顏色(0白色1黑色)。spa
一行表示所求生成樹的邊權和。blog
數據規模和約定
0:V<=10
1,2,3:V<=15
0,..,19:V<=50000,E<=100000
全部數據邊權爲[1,100]中的正整數。ip
思路:咱們發現,若是咱們給白邊增長權值,作最小生成樹,因爲白邊權值增大,致使不容易選白邊。記f(x)爲給白邊增長x權值,作最小生成樹後,選白邊的數量,能夠發現,f(x)隨x增大而減少。因此能夠二分xget
但這種狀況,假如我只能選1條白邊。it
二分到x=4時,一條白邊都不選,當x=3的時候,能夠選兩條白邊io