传送门
思路:裸
代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,tot=-1,x,y,z,s=1,t,ans;
int first[2000],dist[2000],up[2000];
struct os
{int fa,son,remain,next;
}a[2000];
void add(int x,int y,int z)
{a[++tot].fa=x;a[tot].son=y;a[tot].remain=z;a[tot].next=first[x];first[x]=tot;
}
void bfs()
{memset(dist,0,sizeof(dist));dist[s]=1;queue<int> q;q.push(s);while (!q.empty()){int k=q.front();q.pop();for (int i=first[k];i!=-1;i=a[i].next)if (!dist[a[i].son]&&a[i].remain)q.push(a[i].son), dist[a[i].son]=dist[k]+1;}
}
int dfs(int now,int minn)
{if (!minn||now==t) return minn;int k,flow=0;for (int i=up[now];i!=-1;i=a[i].next){up[now]=i;if (dist[now]+1==dist[a[i].son]){k=dfs(a[i].son,min(minn,a[i].remain));a[i].remain-=k;a[i xor 1].remain+=k;flow+=k;minn-=k;if (!minn) break;}}return flow;
}
main()
{scanf("%d%d",&m,&n);memset(first,-1,sizeof(first));for (int i=1;i<=m;i++)scanf("%d%d%d",&x,&y,&z),add(x,y,z),add(y,x,0);t=n;while (1){bfs();if (!dist[t]) break;for (int i=1;i<=n;i++) up[i]=first[i];ans+=dfs(s,0X7f);}printf("%d",ans);
}

ISPA(递归):

#include<bits/stdc++.h>
using namespace std;
int n,m,tot,ans;
int first[20000],dis[20000],last[20000],num[20000],up[20000];
struct os
{int fa,son,remain,next;
}a[40000];
void add(int x,int y,int z)
{a[++tot].fa=x;a[tot].son=y;a[tot].remain=z;a[tot].next=first[x];first[x]=tot;
}
inline int pd(int x)
{if (x&1) return x+1;return x-1;
}
int flow()
{int limit=0x7fffffff;for (int i=n;i!=1;i=a[pd(up[i])].son)limit=min(limit,a[up[i]].remain);for (int i=n;i!=1;i=a[pd(up[i])].son)a[up[i]].remain-=limit,a[pd(up[i])].remain+=limit;return limit;
}
void bfs()
{queue<int> q;q.push(n);dis[n]=1;while (!q.empty()){int k=q.front();q.pop();for (int i=first[k];i;i=a[i].next)if (!dis[a[i].son])dis[a[i].son]=dis[k]+1,q.push(a[i].son);}
}
void search(int now,bool flag)
{if (now==n) {ans+=flow();flag=1;return;}bool pd=0;for (int i=first[now];i;i=a[i].next){if (a[i].remain&&dis[a[i].son]+1==dis[now]) up[a[i].son]=last[now]=i,pd=1,search(a[i].son,flag);if (flag) return;}if (!pd){int minn=0x7fff;for (int i=first[now];i;i=a[i].next)if (a[i].remain)minn=min(minn,dis[a[i].son]);if (--num[dis[now]]==0) {printf("%d",ans);exit(0);}dis[now]=minn+1;last[now]=first[now];num[dis[now]]++;}
}
main()
{scanf("%d%d",&m,&n);int x,y,z;for (int i=1;i<=m;i++)scanf("%d%d%d",&x,&y,&z),add(x,y,z),add(y,x,0);bfs();for (int i=1;i<=n;i++) last[i]=first[i],num[dis[i]]++;while (1)search(1,0);
}

【codevs1993】草地排水,网络流入门(dinic+ispa)相关推荐

  1. 草地排水-网络流dinic

    题目描述 Description 在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水 ...

  2. 【网络流】解题报告:luogu P2740 [USACO4.2]草地排水Drainage Ditches(Edmonds-Karp增广路,最大流模板)

    题目链接:草地排水 若一条从源点到汇点的路径上各条边的剩余容量都大于0,则称这条路径为一条增广路. Edmonds-Karp增广路的策略就是不断用bfs寻找增广路,直至网络中不在存在增广路为止. 在每 ...

  3. 题解 【USACO 4.2.1】草地排水

    [USACO 4.2.1]草地排水 Description 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫 ...

  4. 网络流入门——算法模板,习题和解析

    最近一段时间再搞网络流,今天终于搞完了!!!!QAQ,好累呀. 首先是关于网络流的基础知识,这部分东西有点多,就不在这里说了,给几个有用的资源. 先推荐一下建图的博客:链式向前星,静态链表和邻接矩阵建 ...

  5. 问题 A: 草地排水

    问题 A: 草地排水 时间限制: 2 Sec 内存限制: 256 MB 提交: 122 解决: 30 [提交][状态] 题目描述 [问题描述] 我们都知道,草地排水是一道简单的usaco网络流裸题.当 ...

  6. poj pku图论、网络流入门题总结、汇总

    poj pku图论.网络流入门题总结.汇总 分类: acm图论 2010-08-25 18:49 243人阅读 评论(0) 收藏 举报 网络算法networkgraphconstructioninte ...

  7. dinic算法 c 语言,网络流入门—用于最大流的Dinic算法

    "网络流博大精深"-sideman语 一个基本的网络流问题 最早知道网络流的内容便是最大流问题,最大流问题很好理解: 解释一定要通俗! 如右图所示,有一个管道系统,节点{1,2,3 ...

  8. 草地排水 改了又改(DCOJ6013)

    题目描述 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...

  9. [USACO4.2] 草地排水 Drainage Ditches (最大流)

    题目背景 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...

最新文章

  1. R语言stringr包str_extract函数检查数据是否包含特定模式实战
  2. html设置页面大小_如何将Word文档页面大小设置为16开?
  3. RxJava zip 使用
  4. ANDROID ASSET STUDIO
  5. Net混淆与用de4dot工具破解
  6. pdf转图片 java_有将pdf文件转图片的格式方法吗?
  7. 自动化测试框架 2019_2019年用于自动化的5个最佳Java测试框架
  8. 东北农业大计算机排名,黑龙江高校排名更新,东北林大排名第3,东油排名第8...
  9. web前端开发之div+css教程精华收集二
  10. LintCode 1692. 组队打怪(田忌赛马,二分查找)
  11. Spring Tool Suite 4 添加反编译插件
  12. php dos命令用不了,windows下如何使用DOS命令强制复制文件
  13. 雨滴桌面时间插件_只需要五步,让你的桌面变得干净漂亮
  14. 购买女装摩托车(踏板车)
  15. meteor 结合mysql_Meteor集合
  16. 大数据可视化的意义在哪
  17. iOS 8 Auto Layout界面自动布局系列5-自身内容尺寸约束、修改约束、布局动画
  18. C语言随机数的生成【详解】
  19. STAP旁瓣干扰抑制与干扰对抗仿真
  20. 对AD采样信号的简单滤波处理

热门文章

  1. 暴雪插件占用服务器,暴雪为部分高负载、高排队的服务器开启免费转服服务 解决负载过高问题...
  2. java size_Java length() 方法,length 属性和 size() 方法的区别
  3. colorkey唇釉是否安全_好物推荐|哇哦!有被这些唇釉美到耶
  4. 【李宏毅机器学习】Logistic Regression 逻辑回归(p11) 学习笔记
  5. 优达学城深度学习之一——Anaconda
  6. 欧姆字符的编码c语言,《编码:隐匿在计算机软硬件背后的语言》读书笔记
  7. 利用pandas对一列/多列进行数据区间筛选
  8. java 资深_Java架构师之路:从Java码农到资深架构师
  9. 复函数图像怎么画_如何画出复平面上的网格在复函数映射下的图像?
  10. 24c04硬件地址位_硬件刷题篇(一)