hdu 4240 最大流dicnic
来源:互联网 发布:php常用算法 编辑:程序博客网 时间:2024/06/05 11:04
复习一下dicnic算法 但是好像这个做法有问题 看注释讲解吧
题意:题意一开始没看懂 所以说的详细点
输入一个P代表样例个数
还有每个样例 第一个数D 就是代表第D个样例...不知道出题者的意图...
第二个数是节点的总个数 且节点编号是0~n-1 第三个数是边的个数 第四个数是源点source 第五个数是汇点sink
以后的m行当然就是 节点x到节点y的边权值为z
这道题这么做好像是错误的 但是hdu测试太水
#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<string>#include<stack>#include<queue>#include<cmath>#include<stack>#include<list>#include<map>#include<set>typedef long long ll;using namespace std;const int INF=0x3f3f3f3f;int cap[1005][1005],dis[1005];int m,n;int tmax=0;bool bfs(int s,int e){ int i; queue<int>q; memset(dis,-1,sizeof dis); dis[s]=0; q.push(s); while(!q.empty()) { int k=q.front(); q.pop(); if(k==e) break; for(i=n-1;i>=0;i--) //@ 注意这里的@是标记一下 下面会提到 { if(cap[k][i]&&dis[i]==-1) { dis[i]=dis[k]+1; q.push(i); } } } if(dis[e]==-1)return false; else return true; }int dfs(int s,int e,int low){ int flow,i; if(s==e)return low; for(i=n-1;i>=0;i--) //@那里跟这里的循环方向如果换成 从0~n-1 那么得出来的数据是不对的 { if(cap[s][i]&&dis[s]+1==dis[i]) { flow=dfs(i,e,min(low,cap[s][i])); if(flow==0)continue; cap[s][i]-=flow; cap[i][s]+=flow; tmax=max(flow,tmax); return flow; } } return 0;}int max_flow(int s,int e){ int i=0; while(bfs(s,e)) { while(1) { int tt=dfs(s,e,INF); if(tt==0)break; i+=tt; } } return i;}int main(){ int T,cnt=1; int source,sink; scanf("%d",&T); while(T--) { tmax=0; memset(cap,0,sizeof cap); scanf("%d%d%d%d%d",&cnt,&n,&m,&source,&sink); int x,y,z; while(m--) { scanf("%d%d%d",&x,&y,&z); cap[x][y]+=z; } int tt=max_flow(source,sink); double mm=1.0*tt/tmax; // printf("%f\n",mm); printf("%d %.3lf\n",cnt,mm); } return 0;}
阅读全文
0 0
- hdu 4240 最大流dicnic
- 最大流dicnic裸题 hdu1532 Summer III
- 网络流入门--最大流算法Dicnic 算法
- Dining 【dicnic 求最大流】+【拆点 建模】(解匹配问题)
- 网络流 dicnic sap 2种算法详细解释
- [最大流] hdu 4240 Route Redundancy
- hdu 4240 Route Redundancy(最大流)
- hdu 4240 Route Redundancy(最大流)
- hdu 4240在(最大流)
- hdu 4240 Route Redundancy 最大流 isap
- HDU 4240 Route Redundancy【最大流】
- hdu 2883(最大流)
- 【最大流】HDU 3572
- hdu 2883 最大流
- hdu 3572最大流
- hdu 3605 最大流
- HDU 1733 最大流
- hdu 3549 最大流
- ARM平台
- 如何用ARKit将太阳系装进iPhone(二)
- HashMap的数据结构分析
- 【English ,I love you】
- javascript前三章
- hdu 4240 最大流dicnic
- WinForm特效之桌面上的遮罩层实现方法
- NSArray翻译
- python爬虫--构建网络爬虫的工程要点
- floyd-warshall
- HTML入门笔记27-HTML一个简单的表单设计
- RecyclerView实现二级目录显示---item可伸展收缩的RecyclerVoew
- Socket通信
- 平衡二叉树,AVL树之图解篇