https://www.luogu.org/problemnew/show/P2740

题解:网络流+最大流

/*
*@Author:   STZG
*@Language: C++
*/
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
#define endl "\n"
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=200+10;
const int M=100000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
int s,t,n,m,k,p,l,r,u,v,w,c2;
int ans,cnt,flag,temp,sum;
int dis[N];
struct node{int u,v,c;node(){};node(int form,int to,int cap):u(form),v(to),c(cap){}
};
vector<node>edge;
vector<int> G[N];
void Addedge(int u,int v,int cap){edge.push_back({u,v,cap});edge.push_back({v,u,0});int sz=edge.size();G[u].push_back(sz-2);G[v].push_back(sz-1);
}
bool bfs(int u){memset(dis,-1,sizeof(dis));dis[u]=0;queue<int>q;q.push(u);while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<G[u].size();i++){node e=edge[G[u][i]];//cout<<u<<" "<<e.v<<endl;if(dis[e.v]<0&&e.c>0){dis[e.v]=dis[u]+1;q.push(e.v);}}}return dis[m]>0;
}
int dfs(int u,int flow){if(u==m)return flow;int now;for(int i=0;i<G[u].size();i++){node e=edge[G[u][i]];if(e.c>0&&dis[u]+1==dis[e.v]&&(now=dfs(e.v,min(flow,e.c)))){edge[G[u][i]].c-=now;edge[G[u][i]^1].c+=now;return now;}}return 0;
}
void dinic(){while(bfs(1)){int res=0;while(res=dfs(1,INF)){ans+=res;}}
}
void init(){for(int i=1;i<=m;i++)G[i].clear();edge.clear();ans=0;
}
int main()
{
#ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout);
#endif//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);//scanf("%d",&t);//int T=0;while(~scanf("%d%d",&n,&m)){init();for(int i=1;i<=n;i++){scanf("%d%d%d",&u,&v,&w);Addedge(u,v,w);}dinic();printf("%d\n",ans);}#ifdef DEBUGprintf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC);
#endif//cout << "Hello world!" << endl;return 0;
}

[USACO4.2]草地排水Drainage Ditches相关推荐

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

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

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

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

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

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

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

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

  5. Drainage Ditches POJ1273

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

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

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

  7. [POJ 1273]Drainage Ditches

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

  8. poj1273 Drainage Ditches

    蒟蒻的blog POJ 1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Memory Limit: 10000K Total ...

  9. 网络流 - Drainage Ditches - HDU - 1532

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

最新文章

  1. 电子计算机发展迅,ENIAC问世以来的短短的四十多年中,电子计算机的发展异常迅速...
  2. 好文转载——追求卓越之旅
  3. baseline来啦!第三届厦门国际银行数创金融杯金融营销建模大赛(奖金34万!)
  4. D3js(二): d3js基础
  5. mysql2000 sp4_SQL Server 2000 (SP4)笔记整理(二):数据库表
  6. 如何优化Hive SQL ??
  7. react 最佳实践_最佳React教程
  8. mysql 跨实例复制数据_社区投稿 | MySQL 跨实例 copy 大表解决方案
  9. 程序员,你可以更优秀些!加油!
  10. 卸载linux订阅包
  11. oracle有rtf函数,oracle存取rtf文档
  12. 三目表达式的错误使用
  13. 家用计算机设置网络,手把手教您设置安装家庭无线网络
  14. windows上qt5.9下载安装教程
  15. C++输入一系列数字,以换行结束输入
  16. 小学生python编程写游戏_用python教小孩子编程做游戏(上)
  17. startx analyze
  18. lzo的正确c语言代码,LZO 使用跟介绍
  19. 项目管理/互联网/软件全套文档、产品文档、技术文档、测试文档、运维文档、项目文档
  20. “天鸽”袭港遇天鸽被沽空,最有力的证据还是业绩

热门文章

  1. 计算机科学与编程基础,国外经典教材·计算机科学与技术:Oracle 10g编程基础
  2. 卷积神经网络 训练的结果是什么_射击训练:卷积神经网络识别解剖结构标志位点...
  3. 优学院java架构52破解_[单选] 肢体根据需要采用气囊止血带上肢压力至()
  4. html图片postmultipart,sendmail-MIMEText-MIMEImage-MIMEMultipart.py——发送带图片的HTML格式报表...
  5. oracle 正则表达式拆分字符串,oracle中通过正则表达式函数处理逗号分隔的字段...
  6. java svg image xlink_SVG基础 | SVG image 元素
  7. androidstudio build tools安装_如何导入Android Studio(AS)项目
  8. rabbitmq java教程_GitHub - maxwellyue/rabbitmq-tutorial-java: RabbitMQ官方教程的翻译和说明--Java版...
  9. 犀牛重建曲面_犀牛建模渐消面处理
  10. 一、为了OFFER系列 | 阿里云天池赛在线编程:移动的圆