HDU 1532 Drainage Ditches 排水渠(最大流,入门)
题意:
给出一个有向图,以及边上的容量上限,求最大流。(有重边,要将容量上限叠加)
思路:
用最简单的EK+BFS解决。每次搜到一条到达终点的路径,就立刻退出,更新ans,然后再回头修改图中的当前flow状况(这就得靠记录路径了)。当当前图没有到达终点的路径图,流已经饱和,可以结束程序了。
#include <bits/stdc++.h>
#define LL long long
#define pii pair<int,int>
#define INF 0x7f7f7f7f
using namespace std;
const int N=+; vector<int> vect[N];
int c[N][N]; //容量
int flow[N][N]; //流量 int a[N]; //临时流量
int path[N]; //得记录用的是哪条边,好更新flow和cap int BFS(int m)
{
deque<int> que;
que.push_back();
a[]=INF; //先置为无穷大 while(!que.empty())
{
int x=que.front();
que.pop_front();
for(int i=; i<vect[x].size(); i++)
{
int t=vect[x][i];
if(!a[t] && c[x][t]>flow[x][t] ) //未遍历过,且容>流
{
path[t]=x; //只需要记得到达t的是哪个点
a[t]=min(a[x], c[x][t]-flow[x][t]); //要么全部流给你,要么取能流过的上限
que.push_back(t);
}
}
if(a[m]) return a[m]; //只要有路径能够更新到终点m,立刻退出。
}
return ;
} int cal(int m)
{
int ans_flow=;
while(true) //求最大流
{
memset(a,,sizeof(a));
memset(path,,sizeof(path)); int tmp=BFS(m);
if(!tmp) return ans_flow; //找不到增广路了
ans_flow+=tmp; int ed=m;
while(ed!=) //根据路径调整一下流及上限
{
int from=path[ed];
flow[from][ed]+=tmp; //正向边加流量
flow[ed][from]-=tmp; //反向边减流量,相当于cap-flow一样大于0。
ed=from;
}
}
} int main()
{
freopen("input.txt", "r", stdin);
int n, m, st, ed, ca;
while(~scanf("%d%d",&n,&m))
{ for(int i=; i<=m; i++) vect[i].clear();
memset(c, , sizeof(c));
memset(flow, , sizeof(flow)); for(int i=; i<n; i++)
{
scanf("%d %d %d", &st, &ed, &ca);
vect[st].push_back(ed); //邻接表
vect[ed].push_back(st); //反向边,容量是0的。
c[st][ed]+=ca; //坑在这
}
cout<<cal(m)<<endl; }
return ;
}
AC代码
HDU 1532 Drainage Ditches 排水渠(最大流,入门)的更多相关文章
- POJ 1273 || HDU 1532 Drainage Ditches (最大流模型)
Drainage DitchesHal Burch Time Limit 1000 ms Memory Limit 65536 kb description Every time it rains o ...
- poj 1273 && hdu 1532 Drainage Ditches (网络最大流)
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 53640 Accepted: 2044 ...
- hdu 1532 Drainage Ditches(最大流)
Drainage Dit ...
- hdu 1532 Drainage Ditches(最大流模板题)
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1532 Drainage Ditches (网络流)
A - Drainage Ditches Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- HDU 1532 Drainage Ditches 分类: Brush Mode 2014-07-31 10:38 82人阅读 评论(0) 收藏
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1532 Drainage Ditches (最大网络流)
Drainage Ditches Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) To ...
- USACO93网络流入门Drainage Ditches 排水渠(DCOJ 5130)
题目描述 (传送门:http://poj.org/problem?id=1273翻译 by sxy(AFO的蒟蒻)) 每次约翰的农场下雨,Bessie的水池里的四叶草就会被弄破.这就意味着,这些四叶草 ...
- hdu 1532 Drainage Ditches (最大流)
最大流的第一道题,刚开始学这玩意儿,感觉好难啊!哎····· 希望慢慢地能够理解一点吧! #include<stdio.h> #include<string.h> #inclu ...
随机推荐
- 关于python多线程编程中join()和setDaemon()的一点儿探究
关于python多线程编程中join()和setDaemon()的用法,这两天我看网上的资料看得头晕脑涨也没看懂,干脆就做一个实验来看看吧. 首先是编写实验的基础代码,创建一个名为MyThread的 ...
- WPF ListBox的DataTemplate例子
<ListBox Name="lbLogInfo"> <ListBox.ItemTemplate> <DataTemplate> <Gri ...
- Xubuntu 安装mentohust
对于路由器上网到用户来说,自动分配IP上网。 对于校园网用户,首先下载mentohust_0.3.4-1_i386.deb,双击安装程序 然后在命令窗口中输入sudo -s 密码:user来获得roo ...
- Hibernate从入门到精通(四)基本映射
映射的概念 在上次的博文Hibernate从入门到精通(三)Hibernate配置文件我们已经讲解了一下Hibernate中的两种配置文件,其中提到了两种配置文件的主要区别就是XML可以配置映射.这里 ...
- CPU使用率
CPU使用率 事故回放 当时的情况是那个样子的: 1,正值饭点,客户电话说系统慢,几乎无法完成订单调度,有时还显示内存不足.当时心里的第一个声音就是,服务器配置太低了,远程一看,2核4G内存,cpu平 ...
- DataTableExtensions.AsEnumerable 方法
在下面的示例中,DisplayProducts 方法接收一个数据表,其中包含名为 ProductName一个 DataColumn,提取 ProductName 值,然后输出值. using Syst ...
- html css 如何将表头固定(转)
html css 如何将表头固定 position属性取值为fixed时,则元素的位置将不受滚动条的影响,而是直接依据窗口定位,这就是将表头固定的最直接方法,网上其他途径感觉都是在走弯路.但是与此同时 ...
- The 6th Zhejiang Provincial Collegiate Programming Contest->ProblemB:Light Bulb
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3203 题意:求影子的最长长度L; 当灯,人头和墙角成一条直线时(假设此时人 ...
- Android ListView相关 头和尾 headView footerView
ListView还可以添加头和尾部,而这头和尾就是View对象, 可以使用listView.addHeadView(view)方法和listView.addFootView(view)方法分别添加头和 ...
- 深入理解Java内存模型(二)——重排序
本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-2 数据依赖性 如果两个操作访问同一个变量,且这两个操作中 ...