b lg 繁忙的都市(二分邊權 最小生成樹)

2022-02-24 14:53:42 字數 668 閱讀 8000

城市中每條道路都有乙個分值,分值越小表示這個道路越繁忙,越需要進行改造。

但是市**的資金有限,市長希望進行改造的道路越少越好,於是他提出下面的要求:

1.改造的那些道路能夠把所有的交叉路口直接或間接的連通起來。

2.在滿足要求1的情況下,改造的道路盡量少。

3.在滿足要求1、2的情況下,改造的那些道路中分值最大的道路分值盡量小。

輸出:選出了幾條道路,分值最大的那條道路的分值是多少。

叫你去掉幾條邊權較大的邊,使得總邊權最小,且保持圖仍然連通(最小生成樹的題),可以用二分列舉乙個邊權,判斷用當前邊權下能否遍歷完剩下的結點(相當於去掉了一些邊)

#includeusing namespace std;

const int n=305;

struct node ;

vectorg[n];

int n,m,st[n];

void dfs(int u, int maxw)

}bool vis_all(int w)

int main() );

g[v].push_back();

}int l=1, r=1e5+5;

while (l>1;

if (vis_all(w)) r=w;

else l=w+1;

}cout《一模一樣的題:

hdu 4253(二分 最小生成樹)

思路 求最小生成樹是顯然的,題目還多了乙個限制條件,就是屬於a公司的邊必須有k條,於是我們可以二分來實現這個目的,找乙個盡量大的mid,用a公司的每條邊都加上這個mid,使得求出的最小生成樹中包含a公司的邊至少k條,於是花費ans sum k mid。1 include2 include3 incl...

bzoj2654 二分 最小生成樹

題目戳這裡 我們知道對於乙個最小生成樹而言,它的白邊權值越大,那麼生成樹中的白邊個數越少,反之亦然。所以我們每次二分乙個值,給白邊加上它,在做最小生成樹判斷是否大於所需要的,然後就可以二分來搞了。include include include include define n 100005 usin...

hdu 4253(二分 最小生成樹)

思路 求最小生成樹是顯然的,題目還多了乙個限制條件,就是屬於a公司的邊必須有k條,於是我們可以二分來實現這個目的,找乙個盡量大的mid,用a公司的每條邊都加上這個mid,使得求出的最小生成樹中包含a公司的邊至少k條,於是花費ans sum k mid。1 include2 include3 incl...