Bzoj2561:最小生成树:网络流,最小割
来源:互联网 发布:手机mac地址全为0 编辑:程序博客网 时间:2024/05/19 14:38
题目链接:最小生成树
发现如果这条边可能出现在最大生成树上的话,那么可以代替这条边的所有边都不连通,换句话说这条边是连接u,v必不可少的
于是我们把所有权值大于L的边建成一张边权去为1的图对U,V跑最小割即可知道最少删去多少条边
最小生成树同理QAQ
#include<queue>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=255010;const int inf=0x7fffffff/3;int n,m,h[maxn],cur[maxn],tot=1;struct edge{int to,next,w;}G[maxn*6];struct edges{int a,b,w;}e[maxn*6];int vis[maxn],U,V,W,ans=0,S,T;bool bfs(){for (int i=1;i<=n;++i) vis[i]=-1;queue<int>q; q.push(S); vis[S]=0;while (!q.empty()){int u=q.front(); q.pop();for (int i=h[u];i;i=G[i].next){int v=G[i].to;if (vis[v]==-1&&G[i].w){vis[v]=vis[u]+1;q.push(v);}}}return vis[T]!=-1;}int dfs(int x,int f){if (x==T||!f) return f;int w,used=0;for (int i=cur[x];i;i=G[i].next) if (vis[G[i].to]==vis[x]+1){w=f-used;w=dfs(G[i].to,min(G[i].w,w));G[i].w-=w; G[i^1].w+=w;used+=w; if (G[i].w) cur[x]=i;if (used==f) return f; }if (!used) vis[x]=-1;return used;}int dinic(){int ret=0;while (bfs()){for (int i=1;i<=n;++i) cur[i]=h[i];ret+=dfs(S,inf);}return ret;}void add(int x,int y,int z){G[++tot].to=y;G[tot].w=z;G[tot].next=h[x];h[x]=tot;G[++tot].to=x;G[tot].w=z;G[tot].next=h[y];h[y]=tot;}void solve1(){for (int i=1;i<=m;++i) if (e[i].w>W) add(e[i].a,e[i].b,1);ans=dinic();}void solve2(){memset(h,0,sizeof(h)); tot=1;for (int i=1;i<=m;++i) if (e[i].w<W) add(e[i].a,e[i].b,1);ans+=dinic();}int main(){scanf("%d%d",&n,&m);for (int i=1;i<=m;++i) scanf("%d%d%d",&e[i].a,&e[i].b,&e[i].w);scanf("%d%d%d",&U,&V,&W);S=U; T=V;solve1(); solve2();printf("%d",ans);}
2 0
- Bzoj2561:最小生成树:网络流,最小割
- 【最小割】bzoj2561 最小生成树
- bzoj2561 最小生成树 最小割
- 【bzoj2561】最小生成树 最小割
- 【bzoj2561】【最小生成树】【最小割】
- [bzoj2561]最小生成树 最小割
- BZOJ2561 最小生成树
- BZOJ2561 最小生成树
- bzoj2561 最小生成树
- BZOJ2561: 最小生成树
- BZOJ2561: 最小生成树
- 【bzoj2561】最小生成树
- bzoj2561: 最小生成树
- BZOJ2561【最小割】
- bzoj2561 最小割
- bzoj2561: 最小生成树 最大流
- 2011清华集训.BZOJ2561 && THU A1277.最小生成树(最小割)
- BZOJ 2561 最小生成树 网络流 最小割
- 第3周项目4--换分币
- javascript中的call(),apply()以及bind()的用法
- redis性能优化
- 八皇后问题
- 文件名匹配-动态规划
- Bzoj2561:最小生成树:网络流,最小割
- GDOI2016 退役记
- Android ListView分类加载遇到的一些问题
- Strnig str = new String("123");究竟创建了几个String对象?
- 《java入门第一季》之参数引用
- Swift 不完全函数第 1 部分:如何避免
- [CSAPP笔记][第一章计算机系统漫游]
- 12.链表中倒数第k个结点
- DIV+CSS中的相对定位和绝对定位