博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj2561]最小生成树_网络流_最小割_最小生成树
阅读量:5352 次
发布时间:2019-06-15

本文共 1709 字,大约阅读时间需要 5 分钟。

最小生成树 bzoj-2561

题目大意;。

注释:略。


想法:

我们发现:

如果一条权值为$L$的边想加入到最小生成树上的话,需要满足一下条件。

就是求出原图的最小生成树之后,这个边当做非树边的情况下覆盖的边的最小值不可以比$L$小。

如此,我们级就可以通过网络流来求了。

对于每一条比$L$小的边,我们连双向边,求当前边$u,v$的最小割即可。

如果是最大生成树的话同理,我们只需要把所有比当前加入的边的权值小的边在网络流中连无向边,然后跑最小割即可。

Code:

#include 
#include
#include
#include
#include
#define N 200100 #define M 2000100 using namespace std;int to[M<<1],head[N],nxt[M<<1],val[M<<1],dis[N],tot=1,S,T;queue
q;struct Node {int x,y,w;}e[M]; inline bool cmp_w(const Node &a,const Node &b) {return a.w
47) x=(((x<<2)+x)<<1)+(c^48),c=nc(); return x*f;}inline void add(int x,int y,int z){ to[++tot]=y; val[tot]=z; nxt[tot]=head[x]; head[x]=tot; to[++tot]=x; val[tot]=0; nxt[tot]=head[y]; head[y]=tot;}bool bfs(){ memset(dis,-1,sizeof dis); while(!q.empty()) q.pop(); dis[S]=0; q.push(S); while(!q.empty()) { int x=q.front(); q.pop(); for(int i=head[x];i;i=nxt[i]) if(dis[to[i]]==-1&&val[i]>0) { dis[to[i]]=dis[x]+1; q.push(to[i]); if(to[i]==T) return true; } } return false;}int dinic(int x,int fl){ int tmp=fl; if(x==T) return fl; for(int i=head[x];i;i=nxt[i]) if(dis[to[i]]==dis[x]+1&&val[i]>0) { int mdl=dinic(to[i],min(val[i],tmp)); if(!mdl) dis[to[i]]=-1; val[i]-=mdl; tmp-=mdl; val[i^1]+=mdl; if(!tmp) break; } return fl-tmp;}int main(){ int n=rd(),m=rd(); for(int i=1;i<=m;i++) e[i].x=rd(),e[i].y=rd(),e[i].w=rd(); int u=rd(),v=rd(),L=rd(); S=u,T=v; int ans=0; for(int i=1;i<=m;i++) if(e[i].w
L) add(e[i].x,e[i].y,1),add(e[i].y,e[i].x,1); while(bfs()) ans+=dinic(u,1<<30); cout << ans << endl ; return 0;}

 小结:好玩吧。

转载于:https://www.cnblogs.com/ShuraK/p/10244778.html

你可能感兴趣的文章
Oracle session相关数据字典(一)
查看>>
织梦文章内容提取第一张或者多张图片输出
查看>>
C#用正则表达式 获取网页源代码标签的属性或值
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
WCF(一) 简单的认知
查看>>
[MFC][DShow]简单例子
查看>>
降序排列
查看>>
十一、类型转换
查看>>
面试内容,值得一看
查看>>
UILabel
查看>>
【热门技术】三种SEO方式
查看>>
[Hades_技术]哈迪斯初级技术应用
查看>>
SQLiteOpenHelper
查看>>
Luogu P1141 01迷宫【搜索/dfs】By cellur925
查看>>
js onclick事件传参
查看>>
WiCloud 商业Wi-Fi管理平台
查看>>
团队项目--未完待续
查看>>
双重标准,我该怎么解决
查看>>
python中的网页标签等字符处理
查看>>
Mybatis输入类型和结果类型
查看>>