题目背景
在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水。这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间。因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没的烦恼(不用担心,雨水会流向附近的一条小溪)。作为一名一流的技师,农夫约翰已经在每条排水沟的一端安上了控制器,这样他可以控制流入排水沟的水流量。

题目描述
农夫约翰知道每一条排水沟每分钟可以流过的水量,和排水系统的准确布局(起点为水潭而终点为小溪的一张网)。需要注意的是,有些时候从一处到另一处不只有一条排水沟。

根据这些信息,计算从水潭排水到小溪的最大流量。对于给出的每条排水沟,雨水只能沿着一个方向流动,注意可能会出现雨水环形流动的情形。

输入输出格式
输入格式:
第1行: 两个用空格分开的整数N (0 <= N <= 200) 和 M (2 <= M <= 200)。N是农夫John已经挖好的排水沟的数量,M是排水沟交叉点的数量。交点1是水潭,交点M是小溪。

第二行到第N+1行: 每行有三个整数,Si, Ei, 和 Ci。Si 和 Ei (1 <= Si, Ei <= M) 指明排水沟两端的交点,雨水从Si 流向Ei。Ci (0 <= Ci <= 10,000,000)是这条排水沟的最大容量。

输出格式:
输出一个整数,即排水的最大流量。

输入输出样例
输入样例#1:
5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10
输出样例#1:
50
说明
题目翻译来自NOCOW。

USACO Training Section 4.2

code:

//Menteur_Hxy
#include <cstdio>
#include <iostream>
#include <queue>
#include <cstring>
#define ll long long
#define f(a,b,c) for(int a=b;a<=c;a++)
using namespace std;ll rd() {ll x=0,fla=1; char c=' ';while(c<'0' || c>'9') {c=getchar();if(c=='-') fla=-fla;};while(c>='0' && c<='9') x=x*10+c-'0',c=getchar();return x*fla;
}const int INF=0x3f3f3f3f;
const int MAX=501;
const int T=201;
int n,m,ans,cnt=1;
int h[MAX],head[MAX],cur[MAX];struct edges {int next,to,fl;
}edge[MAX<<1];void add(int c,int b,int a) {//下面的三个rd()会倒序执行,查了半天qaq// cout<<a<<"-"<<b<<"-"<<c<<endl;edge[++cnt]=(edges){head[a],b,c}; head[a]=cnt;edge[++cnt]=(edges){head[b],a,0}; head[b]=cnt;
}queue <int> q;bool bfs() {memset(h,-1,sizeof h);h[1]=0;q.push(1);while(!q.empty()) {int u=q.front(); q.pop();// cout<<u<<endl;// cout<<head[u]<<endl;for(int i=head[u];i;i=edge[i].next) {if(edge[i].fl && h[edge[i].to]==-1) {h[edge[i].to]=h[u]+1;q.push(edge[i].to);}}}if(h[n]==-1) return 0;else return 1;
}int dfs(int x,int f) {if(x==n) return f;int w,used=0;for(int i=head[x];i;i=edge[i].next)if(edge[i].fl && h[edge[i].to]==h[x]+1) {w=dfs(edge[i].to,min(f-used,edge[i].fl));used+=w; edge[i].fl-=w; edge[i^1].fl+=w;if(used==f) return f;}// if(!used) h[n]=-1;return used;
}void dinic() {while(bfs()) ans+=dfs(1,INF);
}int main() {m=rd(),n=rd();f(i,1,m) add(rd(),rd(),rd());// f(i,1,n) cout<<head[i]<<" ";// cout<<endl;dinic();printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/Menteur-Hxy/p/9247978.html

[USACO4.2] 草地排水 Drainage Ditches (最大流)相关推荐

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

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

  2. [USACO4.2]草地排水Drainage Ditches

    https://www.luogu.org/problemnew/show/P2740 题解:网络流+最大流 /* *@Author: STZG *@Language: C++ */ #include ...

  3. POJ - 1273 Drainage Ditches(最大流)

    题目链接:点击查看 题目大意:现在一共有n个节点,需要修建m条水渠将池塘的水引入小溪,点1代表池塘,点n代表小溪,每条水渠都有一定的排水能力,问最大的排水效率是多少 题目分析:网络流的模板题,直接套板 ...

  4. POJ 1273 Drainage Ditches 最大流

    很裸的最大流问题,不过注意会有重边,o(╯□╰)o,被阴了WA了一发 还有就是要用long long #include <cstdio> #include <cstring> ...

  5. 网络流--最大流--POJ 1273 Drainage Ditches

    链接 Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clov ...

  6. USACO Section 4.2 Drainage Ditches(最大流)

    最大流问题.ISAP算法.注意可能会有重边,不过我用的数据结构支持重边.距离d我直接初始化为0,也可以用BFS逆向找一次. -------------------------------------- ...

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

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

  8. Drainage Ditches POJ1273

    Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 93263 Accepted: 36174 试题链接 文章目录 Descripti ...

  9. [POJ 1273]Drainage Ditches

    [问题描述] Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch ...

最新文章

  1. 页面刷新vuex数据消失问题解决方案
  2. 2022版全球及中国蓝宝石材料产业容量预测与十四五投资战略研究报告
  3. Docker搭建hadoop集群
  4. 蓝桥杯单片机十一届省赛_“第十届蓝桥杯青少组C++省赛”前三题解题思路及参考答案!...
  5. Linux 命令之 cd 命令-切换目录
  6. 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes
  7. 51Nod-1018 排序【排序】
  8. ubuntu14.04中安装opencv2.4.11
  9. eplan p8详细安装步骤文库_eplan p8详细安装步骤
  10. 2048+html源码之家,前端纯原生代码实现2048
  11. 从零开始学数据库-MySQL
  12. JUCE学习笔记06-音频输出基础(正弦波)
  13. 戴个美瞳却患上了角膜炎和干眼症?
  14. python文件的运行方法
  15. 计算机文档考试题目及答案,计算机word考试题及答案解析
  16. 数据库系统的基本概念
  17. 前端性能优化:1.什么是前端性能优化
  18. 营收毛利净利均双位数增长,亚信科技掌握了什么秘诀?
  19. 非常简单的中英互译在线翻译操作方法
  20. 卷毛0基础学习Golang-并发编程-02 Goroutine

热门文章

  1. 线性代数:矩阵乘向量-学习笔记
  2. SpringBoot使用ELK日志收集
  3. 《Arduino家居安全系统构建实战》——1.7 小结
  4. ClientAbortException 异常
  5. 软件测试的学习之路 ----- 数据库的概要图
  6. 怎么修改html的空格大小,如何改变空格的大小 word空格间隔很大怎么调整
  7. lr0文法分析表示例_详解自然语言处理(NLP)5大语义分析技术及14类应用(建议收藏)...
  8. Unity Shader之入门-helloworld
  9. std::cin 溢出_溢出:坦诚地工作与焦虑如何影响我的团队
  10. linux成为管理员_成为系统管理员需要知道的