题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532

题目大意是:农夫约翰要把多个小池塘的水通过池塘间连接的水渠排出去,从池塘1到池塘M最多可以排多少的水流量,给定水渠和连接的两个小池塘,以及该水渠的流量,求最大流。

其实就是裸的最大流,源点是1号池塘,汇点是M号池塘,从1到M做一个dinic算法求出最大流就行,但是我一直WA,怎么也改不对,后来发现是因为自己喜欢用vector建边建图的原因,对于输入多组样例时,没有初始化上组样例的vector数组的数据,导致tle,wa各种错误,找了一个多小时才发现!下次记得要用clear()函数清除vector数组中的数据。

AC代码:

#include<iostream>
#include<stack>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int Ni = 205;
const int MAX = 0x3f3f3f3f; struct node{
vector<int> vex;//某个节点连接的点
vector<int> num;//连接节点边的序号
}g[Ni];
struct edge{
int u,v,c;//u起点,v终点,c流量
}e[Ni*Ni];
int d[Ni];//深度
int N,M;
int edgenum = 0;//边的序号从0开始,
void addedge(int u,int v,int c){
e[edgenum].u = u;
e[edgenum].v = v;
e[edgenum].c = c;
g[u].vex.push_back(v);
g[u].num.push_back(edgenum++);
e[edgenum].u = v;
e[edgenum].v = u;
e[edgenum].c = 0;
g[v].num.push_back(edgenum++);
g[v].vex.push_back(u);
} int bfs(){
memset(d,-1,sizeof(d));
queue<int> q;
q.push(1);
d[1] = 0;
while(!q.empty()){
int cur = q.front() ;
q.pop() ;
for(int i = 0;i<g[cur].vex.size() ;i++ ){
int now = g[cur].vex[i];
int te = g[cur].num[i];
if(d[now] == -1 && e[te].c > 0 ){//如果now没有访问过,且该边流量大于0
d[now] = d[cur] + 1;//增加深度
q.push(now);
}
}
}
return d[M]!=-1;
} int dfs(int a,int b){
int r = 0; if(a == M){
return b;
} for(int i = 0;i<g[a].vex.size() && r<b ;i++ ){
int u = g[a].vex[i];
int te = g[a].num[i];
if(e[te].c > 0 && d[u] == d[a] + 1 ){
int t = min(e[te].c,b - r);//求出可以流过的流量
t = dfs(u,t);//递归寻找增广路
r+=t;
e[te].c-=t;
e[te^1].c+=t;
}
}
if(!r){
d[a] = -2;
}
return r;
} int dinic(int sp,int tp){
int total = 0,t;
while(bfs()){
while(1){
t = dfs(sp,MAX);
if(!t){//找不到增广路,t=0,循环终止
break;
}
total+=t;
}
}
return total;
} int main(){
while(~scanf("%d%d",&N,&M)){
for(int i = 0;i<N;i++){
int u,v,C;
scanf("%d%d%d",&u,&v,&C);
addedge(u,v,C);
}
printf("%d\n",dinic(1,M));
for(int i = 1;i<=M;i++){//!!!while输入多组样例,一定要清空vector数组内的数据!
g[i].num.clear() ;
g[i].vex.clear() ;
}
}
return 0;
}

hdu 1532 Drainage Ditches(网络流)的更多相关文章

  1. HDU 1532 Drainage Ditches(网络流模板题)

    题目大意:就是由于下大雨的时候约翰的农场就会被雨水给淹没,无奈下约翰不得不修建水沟,而且是网络水沟,并且聪明的约翰还控制了水的流速, 本题就是让你求出最大流速,无疑要运用到求最大流了.题中m为水沟数, ...

  2. HDU 1532 Drainage Ditches (网络流)

    A - Drainage Ditches Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  3. HDU 1532 Drainage Ditches (最大网络流)

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

  4. 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) ...

  5. HDU 1532 Drainage Ditches(最大流 EK算法)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1532 思路: 网络流最大流的入门题,直接套模板即可~ 注意坑点是:有重边!!读数据的时候要用“+=”替 ...

  6. POJ 1273 || HDU 1532 Drainage Ditches (最大流模型)

    Drainage DitchesHal Burch Time Limit 1000 ms Memory Limit 65536 kb description Every time it rains o ...

  7. poj 1273 && hdu 1532 Drainage Ditches (网络最大流)

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53640   Accepted: 2044 ...

  8. hdu 1532 Drainage Ditches(最大流)

                                                                                            Drainage Dit ...

  9. hdu 1532 Drainage Ditches(最大流模板题)

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

随机推荐

  1. centos7上python3.6.5的安装及卸载

    前言 最近开始安装配置公司给我的台式机,加上刚刚购买的ECS,处女座的我,环境前前后后大概装了有十来次吧,之前装总是临时网上找教程,但是装下来总是感觉有点别扭,当时服务器装的是3.6.5,虚拟机装的是 ...

  2. 54.Python中Meta类常见的配置

    对于一些模型级别的配置.我们可以通过在模型中定义一个类,叫做Meta.然后在这个类中添加一些属性来控制模型的作用. 注意:添加的这个类一定要是Meta,否者的话Django就会不能够识别. from ...

  3. 安装oracle11gR2

    一.通过百度云等途径下载oracle11gR2 二.安装步骤 1,解压缩文件,将两个压缩文件一起解压. 2,在setup.exe右键--属性--兼容性,勾“以管理员身份运行此程序”. 3,双击“set ...

  4. ECMAScript基本语法——⑥流程控制语句

    if...else...switch...case... 在java中能接收的数据类型:byte .short.char.int.枚举类型(JDK5.0新增).String类型(JDK7.0新增) s ...

  5. python笔记07

    今日内容 深浅拷贝(面试) 文件操作 今日内容 深浅拷贝 v1=[1,2,[34,67,9]] import copy 浅拷贝: 拷贝第一层 v2=copy(v1)---将v1的地址copy,最外层壳 ...

  6. 跨域请求问题:CORS

    1.编写过滤器类:需要实现Filter接口,并重写三个方法: (1)先设置字符编码: request.setCharacterEncoding("utf-8"); response ...

  7. Codeforces 832A. Sasha and Sticks

    It's one more school day now. Sasha doesn't like classes and is always bored at them. So, each day h ...

  8. javaWeb快速入门+——初体验-HelloWorld

    文章转载自 https://www.cnblogs.com/1906859953Lucas/p/10821840.html 练习成品下载 https://www.lanzous.com/i9fljkj ...

  9. 如何在macOS下安装geoserver

    macOS 下的编译包 如果是使用安装文件,请查看官网文档,如果想要部署在已有的tomcat服务下,请查看网页压缩包章节. Web archive. An alternate way of insta ...

  10. Oracle 数据库,远程访问 ora-12541:TNS:无监听程序

    1.修改网络连接IPV4设置为固定IP IP地址:192.168.100.8子网掩码:255.255.255.0默认网关:192.168.100.1首选DNS:192.168.100.1 2.修改.. ...