这就是以后我的板子啦~~~

  1. #include <queue>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. #define N 444
  7. int tot,next[N],first[N],w[N],v[N],n,m,ch[N];
  8. void add(int from,int to,int weight){
  9. v[tot]=to;w[tot]=weight;
  10. next[tot]=first[from];
  11. first[from]=tot++;
  12. }
  13. bool tell(){
  14. memset(ch,-1,sizeof(ch));
  15. queue<int>q;
  16. q.push(1);ch[1]=0;
  17. while(!q.empty()){
  18. int t=q.front();q.pop();
  19. for(int i=first[t];~i;i=next[i])
  20. if(w[i]&&ch[v[i]]==-1)
  21. q.push(v[i]),ch[v[i]]=ch[t]+1;
  22. }
  23. return ch[n]!=-1;
  24. }
  25. int zeng(int a,int b){
  26. if(a==n)return b;
  27. int r=0;
  28. for(int i=first[a];~i&&b>r;i=next[i])
  29. if(ch[a]+1==ch[v[i]]&&w[i]){
  30. int t=zeng(v[i],min(b-r,w[i]));
  31. w[i]-=t;w[i^1]+=t;r+=t;
  32. }
  33. if(!r)ch[a]=-1;
  34. return r;
  35. }
  36. int dinic(){
  37. int ans=0,jy;
  38. while(tell())while(jy=zeng(1,0x3fffffff))ans+=jy;
  39. return ans;
  40. }
  41. int main(){
  42. while(scanf("%d%d",&m,&n)!=EOF){
  43. memset(first,-1,sizeof(first));
  44. register int xx,yy,zz;
  45. tot=0;
  46. for(int i=1;i<=m;i++){
  47. scanf("%d%d%d",&xx,&yy,&zz);
  48. add(xx,yy,zz);add(yy,xx,0);
  49. }
  50. printf("%d\n",dinic());
  51. }
  52. }

还有一中写在结构体里面的:

(假设1为源点,n为汇点)

  1. struct Dinic{
  2. int fst[N],next[N],w[N],v[N],vis[N],cnt;
  3. void init(){memset(fst,-1,sizeof(fst)),cnt=0;}
  4. void add(int x,int y,int z){
  5. w[cnt]=z,v[cnt]=y;
  6. next[cnt]=fst[x],fst[x]=cnt++;
  7. }
  8. bool tell(){
  9. memset(vis,-1,sizeof(vis));
  10. queue<int>q;
  11. q.push(1),vis[1]=0;
  12. while(!q.empty()){
  13. int t=q.front();q.pop();
  14. for(int i=fst[t];~i;i=next[i])
  15. if(w[i]&&vis[v[i]]==-1)
  16. q.push(v[i]),vis[v[i]]=vis[t]+1;
  17. }
  18. return vis[n]!=-1;
  19. }
  20. int zeng(int x,int y){
  21. if(x==n)return y;
  22. int r=0;
  23. for(int i=fst[x];~i&&y>r;i=next[i]){
  24. if(w[i]&&vis[v[i]]==vis[x]+1){
  25. int t=zeng(v[i],min(y-r,w[i]));
  26. w[i]-=t,w[i^1]+=t,r+=t;
  27. }
  28. }
  29. if(!r)vis[x]=-1;
  30. return r;
  31. }
  32. void flow(){
  33. int ans=0,xx;
  34. while(tell())while(xx=zeng(1,0x3fffffff))ans+=xx;
  35. printf("%d\n",ans);
  36. }
  37. }dinic;

网络流Dinic算法模板 POJ1273的更多相关文章

  1. POJ 1273 Drainage Ditches(网络流dinic算法模板)

    POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...

  2. POJ 3281 [网络流dinic算法模板]

    题意: 农场主有f种食物,d种饮料,n头牛. 接下来的n行每行第一个数代表第i头牛喜欢吃的食物数量,和第i头牛喜欢喝的饮料数目. 接下来分别是喜欢的食物和饮料的编号. 求解:农场主最多能保证几头牛同时 ...

  3. 网络流dinic ek模板 poj1273

    这里只是用来存放模板,几乎没有讲解,要看讲解网上应该很多吧…… ek bfs不停寻找增广路到找不到为止,找到终点时用pre回溯,O(VE^2) #include<cstdio> #incl ...

  4. POJ 1815 - Friendship - [拆点最大流求最小点割集][暴力枚举求升序割点] - [Dinic算法模板 - 邻接矩阵型]

    妖怪题目,做到现在:2017/8/19 - 1:41…… 不过想想还是值得的,至少邻接矩阵型的Dinic算法模板get√ 题目链接:http://poj.org/problem?id=1815 Tim ...

  5. HDU1532最大流 Edmonds-Karp,Dinic算法 模板

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...

  6. hdu 2435 dinic算法模板+最小割性质

    #include<stdio.h> #include<queue> #include<string.h> using namespace std; #define ...

  7. POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]

    题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...

  8. hdu-3549 Flow Problem---最大流模板题(dinic算法模板)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3549 题目大意: 给有向图,求1-n的最大流 解题思路: 直接套模板,注意有重边 传送门:网络流入门 ...

  9. poj 1459 Power Network : 最大网络流 dinic算法实现

    点击打开链接 Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 20903   Accepted:  ...

随机推荐

  1. [Angular] Set Metadata in HTTP Headers with Angular HttpHeaders

    Besides sending (or requesting) the actual data to the server API, there’s also often the need to se ...

  2. 搜狗面试的经典题(C++map按值排序,class struct的差别)

    一:起因 (1)java  Map排序(key,value).请看还有一篇博客 java Map排序 (2)c++ map排序(key,value),能够对c++ map和java Map进行对照:之 ...

  3. 面试-MySQL

    1  事务的特性 事务具有四个特性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持续性(Durability).这四个特性也简称ACID性. (1)原 ...

  4. (三 )kafka-jstorm集群实时日志分析 之 ---------jstorm集成spring 续(代码)

    本地模式启动的. package com.doctor.kafkajstrom; import java.util.HashMap; import java.util.Map; import java ...

  5. HDU 1051: Wooden Sticks(贪心)

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  6. windows上通过vnc连接虚拟机中linux系统

    首先要在虚拟机中安装vnc. 虚拟机的设置中要启用VNC连接. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHdzc2c=/font/5a6L5L2T/ ...

  7. Git 时间,将代码托管到GitHub 上

    第一步:在github上创建一个项目,选择所属类型.会自动生成下面的文件. 第二步:使用安卓创建项目 第三步:使用git bash 进入项目目录,通过指令clone到本地 克隆完成后会出现下面的内容 ...

  8. doT.js实现混合布局,判断,数组,函数使用,取模,数组嵌套

    doT.js实现混合布局 数据结构 { "status": "1", "msg": "获取成功", "info ...

  9. 持久层框架Clone

    Clone框架:http://www.52chloe.com/Wiki/Document/3324802610879266816 Clone框架支持多种数据库,我用的是sql server 基本查询: ...

  10. Windows 10 Mobile 演示:系统输入法功能演示

    笔者近期会发布多篇<Windows 10 Mobile 演示>文章,帮助想买 Windows 10 手机的朋友了解 Windows 10 Mobile 系统特色.今天给大家带来 Windo ...