BZOJ 1196 貪心 最小生成樹

2021-07-16 17:49:30 字數 411 閱讀 1173

這道題我們可以貪心,首先按建一級公路的花費從小到大排序,然後用最小生成樹的做法選出k條並做好標記,然後再按建一級公路和建二級公路的花費的最小值排序,再做一遍最小生成樹,更新答案。這樣做的正確性是因為先加入了有用的k條一級公路,並且滿足這些公路最大值最小,然後又按照最小生成樹的方法加邊,又滿足後加入的邊的最大值最小,因此整個過程都滿足最大值最小

#include#include#includeusing namespace std;

#define maxn 200000

struct edge

e[maxn];

int n,m,k,father[maxn],cnt,ans;

bool flag[maxn];

bool cmp(edge a,edge b)

{ return a.cost1

BZOJ 2654 貪心 最小生成樹

2654 tree time limit 30 sec memory limit 512 mb description 給你乙個無向帶權連通圖,每條邊是黑色或白色。讓你求一棵最小權的恰好有need條白色邊的生成樹。題目保證有解。input 第一行v,e,need分別表示點數,邊數和需要的白色邊數。接...

貪心 最小生成樹Kruskal演算法

構造最小生成樹還有一種演算法,kurskal演算法 設g v,e 是無向連通帶權圖,v 設最小生成樹t v,te 該樹的初始狀態為只有n個頂點而無邊的非連通圖t v,kruskal演算法將這n個頂點看成是n個孤立的連通分支。它首先將所有的邊按權值從小到大排序,然後只要t中選中的邊數不到n 1,就做如...

bzoj 2561 最小生成樹

給定乙個邊帶正權的連通無向圖g v,e 其中n v m e n個點從1到n依次編號,給定三個正整數u,v,和l u v 假設現在加入一條邊權為l的邊 u,v 那麼需要刪掉最少多少條邊,才能夠使得這條邊既可能出現在最小生成樹上,也可能出現在最大生成樹上?第一行包含用空格隔開的兩個整數,分別為n和m 接...