dinic网络最大流
来源:互联网 发布:弹丸论破未来篇 知乎 编辑:程序博客网 时间:2024/05/16 12:48
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int inf=0x7fffffff;int n,m,t,cnt;struct zp{ int u,v,w,Next;}Map[1000010];int dis[1010],head[1010];void add(int u,int v,int w){ Map[cnt].u=u; Map[cnt].v=v; Map[cnt].w=w; Map[cnt].Next=head[u]; head[u]=cnt++; Map[cnt].u=v; Map[cnt].v=u; Map[cnt].w=0; Map[cnt].Next=head[v]; head[v]=cnt++;}int BFS()//根据残留网络建立层次图{ memset(dis,0,sizeof(dis)); dis[0]=1; queue<int> q; q.push(0); while(!q.empty()) { int u=q.front(); q.pop(); for(int i=head[u]; i!=-1; i=Map[i].Next) { int v=Map[i].v; if(Map[i].w&&!dis[v]) { dis[v]=dis[u]+1; if(v==t) return 1; q.push(v); } } } return 0;}int dfs(int a,int low)//寻找增广路{ int cost=0; if(a==t) return low; for(int i=head[a]; i!=-1; i=Map[i].Next) { int v=Map[i].v; if(Map[i].w&&dis[a]==dis[v]-1) { int tmp=dfs(v,min(low-cost,Map[i].w)); if(tmp>0) { Map[i].w-=tmp; Map[i^1].w+=tmp;//反向边 cost+=tmp; if(cost==low) break; } else dis[v]=-1; } } return cost;}int dinic()//求最大流{ int ans=0,s=0; while(BFS()) ans+=dfs(s,inf); return ans;}int main(){ int ncase,s[505],e[505],p[505]; scanf("%d",&ncase); int cas=1; while(ncase--) { scanf("%d%d",&n,&m); int t1=n,t2=0,sum=0; for(int i=1; i<=n; i++) { scanf("%d%d%d",&p[i],&s[i],&e[i]); t1=min(t1,s[i]); t2=max(t2,e[i]); sum+=p[i]; } cnt=0; memset(head,-1,sizeof(head)); for(int i=t1;i<=t2;i++) { add(0,i,m); } for(int i=1;i<=n;i++) { for(int j=s[i];j<=e[i];j++) { add(j,j+t2,1); add(j+t2,2*t2,1); } } t=2*t2; if(sum<=dinic()) printf("Case %d: Yes\n\n",cas++); else printf("Case %d: No\n\n",cas++); } return 0;}
0 0
- dinic网络最大流
- 最大网络流(Dinic)
- 最大网络流Dinic算法
- 网络最大流 dinic算法
- poj1273(网络流最大流dinic)
- poj1149(网络流最大流dinic)
- hdu 1532 网络流-最大流 DINIC
- [网络流]最大流算法 Dinic
- Dinic算法(网络流,最大流)
- 网络最大流(dinic)【模板】
- poj1149 PIGS 网络最大流Dinic
- 网络最大流之dinic模板
- 网络最大流(dinic)模板
- POJ 1149 PIGS (网络最大流 Dinic)
- Dinic算法 P3376 【模板】网络最大流
- 【模板】网络最大流 (Dinic)
- 【模板】Dinic求网络最大流
- 最大网络流模板Dinic算法
- Dijkstar及其优先队列优化
- HTML5中的save()和restore()方法的用法
- 机器学习之(三)梯度下降法的三种形式BGD、SGD以及MBGD
- CSRF跨域请求伪造
- 理解RESTful架构
- dinic网络最大流
- 计算机专业英语2013影印版第五章 Backup and Restore段
- js链式动画封装
- SQL匹配模式
- JQuery页面加载完成后执行事件
- Android ble开发中遇到的问题
- 欢迎使用CSDN-markdown编辑器
- Floyd最短路
- 数据结构 第四章课后题 (2)(4)(6)