BZOJ 2561 最小生成樹

2022-04-30 06:15:08 字數 862 閱讀 9173

bzoj_2561_最小生成樹_最小割

題意:給定乙個邊帶正權的連通無向圖g=(v,e),其中n=|v|,m=|e|,n個點從1到n依次編號,給定三個正整數u,v,和l (u≠v),假設現在加入一條邊權為l的邊(u,v),那麼需要刪掉最少多少條邊,才能夠使得這條邊既可能出現在最小生成樹上,也可能出現在最大生成樹上?

分析:如果所有邊中有能使u,v連通且權值比l小的,那新加的這條邊就不會出現在最小生成樹上,最大生成樹同理,那麼問題就轉化成求u,v之間的最小割,最小和最大分別做一次,相加即可。

注意無向圖連邊時容量。

**:

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

#define n 20020

#define m 400050

#define inf 100000000

struct a

e[m];

int s,t,ans;

int head[n],to[m],nxt[m],cnt=1,flow[m],n,m;

int dep[n];

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

bool bfs()}}

return 0;

}int dfs(int x,int mf)

}dep[x]=0;

return nf;

}int dinic()

}return sum;

}int main()

scanf("%d%d%d",&s,&t,&z);

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

}printf("%d",ans+dinic());

}

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