BZOJ 2561 最小生成樹 網路流 最小割

2022-03-30 06:04:29 字數 796 閱讀 8276

bzoj 2561

用kruskal演算法的思路來考慮,邊(u, v, l)可能出現在最小生成樹上,就是說對於所有邊權小於l的邊,u和v不能連通,即求最小割;

對於最大生成樹的情況也一樣。容易看出兩個子問題是各自獨立的,把兩個最小割相加即可。

#include #include #include #include #include using namespace std;

typedef long long ll;

#define enter putchar('\n')

#define space putchar(' ')

template void read(t &x)

template void write(t x)

const int n = 20010, m = 1000005, inf = 0x3f3f3f3f;

int n, m, l, src, des, st, ed, ans, u[m], v[m], w[m];

int ecnt = 1, adj[n], cur[n], dis[n], nxt[m], go[m], cap[m];

void add(int u, int v, int _cap)

bool bfs()

}return 0;

}int dfs(int u, int flow)

dis[u] = -1;

return ret;

}int maxflow()

void init()

int main()

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的邊建出...