bzoj 2561 最小生成樹(最小割)

2021-08-14 10:54:02 字數 782 閱讀 5089

傳送門biu~

根據kruskal演算法可知,比最小生成樹上的邊(u,v,w)權值小的所有邊無法將u和v聯通。那麼在圖中加入權值比l小的所有邊,跑最小割就是這條邊出現在最小生成樹上時需要刪掉最少的邊數;相同的方式計算最大生成樹,將兩個答案相加就可以了。

#include

using

namespace

std;

const

int inf=1e9;

int n,m,s,t,w,ans;

struct edgee[200005];

int fir[20005],head[20005],dep[20005],nex[400005],to[400005],cap[400005],tp=1;

inline

void add(int x,int y,int c)

inline

int bfs()}}

return dep[t];

}int dfs(int x,int now)

}return c;

}inline

int dinic()

return c;

}int main()

}ans+=dinic();

memset(head,0,sizeof(head));tp=1;

for(int i=1;i<=m;++i)

}ans+=dinic();

printf("%d",ans);

return

0;}

bzoj 2561 最小生成樹

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

bzoj2561 最小生成樹

time limit 10 sec memory limit 128 mb submit 1024 solved 520 submit status discuss 給定乙個邊帶正權的連通無向圖g v,e 其中n v m e n個點從1到n依次編號,給定三個正整數u,v,和l u v 假設現在加入一...

bzoj 2561 最小生成樹

給定乙個邊帶正權的連通無向圖,現在加入一條邊權為l的邊 u,v 那麼需要刪掉最少多少條邊,才能夠使得這條邊既可能出現在最小生成樹上,也可能出現在最大生成樹上?以前看著一臉懵逼,現在好像就是那樣。容易想到,當u v存在一條路徑,上面不存在 l的邊,那麼新邊一定不在最小生成樹上,所以將所有小於l的邊建出...