博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1532 Drainage Ditches(最大流)
阅读量:3713 次
发布时间:2019-05-21

本文共 1151 字,大约阅读时间需要 3 分钟。

题目链接:

题目大意:

给出一些渠道,每个渠道有一个走向和容量,问最终汇集到溪流中的水的总量

题目分析:

裸裸的网络流的最大流,模板题

代码如下:

#include 
#include
#include
#include
#include
#define MAX 207#define INF 0x3f3f3f3fusing namespace std;int n,m;int s[MAX][MAX];int d[MAX];bool bfs ( ){ queue
q; memset ( d , -1 , sizeof ( d ) ); d[1] = 0; q.push ( 1 ); while ( !q.empty() ) { int v = q.front(); q.pop(); for ( int i = 1 ; i <= n ; i++ ) if ( d[i] == -1 && s[v][i] ) { d[i] = d[v]+1; q.push ( i ); } } return d[n] != -1;}int dfs ( int v , int cur_flow ){ int dt = cur_flow; if ( v == n ) return cur_flow; for ( int i = 1 ; i <= n ; i++ ) if ( s[v][i] > 0 && d[v]+1 == d[i] ) { int flow = dfs ( i , min ( dt , s[v][i] ) ); s[v][i] -= flow; s[i][v] += flow; dt -= flow; } return cur_flow - dt;}int dinic ( ){ int cur_flow, ans = 0; while ( bfs() ) { while ( cur_flow = dfs ( 1 , INF ) ) ans += cur_flow; } return ans;}int main ( ){ while ( ~scanf ( "%d%d" , &m , &n ) ) { int u,v,c; memset ( s , 0 , sizeof ( s ) ); while ( m-- ) { scanf ( "%d%d%d" , &u , &v , &c ); s[u][v] += c; } //cout << "YES" << endl; printf ( "%d\n" , dinic() ); }}

转载地址:http://tpvjn.baihongyu.com/

你可能感兴趣的文章
总结C语言、Python、Java三者的一些区别
查看>>
软件工程导论学习小结
查看>>
Python中List、Tuple、Set、Dictionary四者各自的特点
查看>>
spark在IDEA的本地无法使用saveAsTextFile存储文件
查看>>
模拟虚拟存储
查看>>
华为交换机 同一网段 不同vlan 的互相通信
查看>>
1-----Python入门--环境的搭建
查看>>
2、Python入门--变量和常见运算符
查看>>
4、Python入门--程序控制-选择结构。
查看>>
交换机vlan(主要为华为)一些总结,还有思科交换机vlan
查看>>
华为交换部分二(生成树)
查看>>
Linux第二次基础知识总结(rpm、yum、服务器基础、web、dhcp、nfs、ftp)开机过程
查看>>
TCP 详解,学习SCTP协议总结其相比TCP的优势!
查看>>
linux运维 第三次 MySql数据库 上
查看>>
Linux----VMware安装Centos7超详细过程(图文)
查看>>
linux--yum源,源码包
查看>>
linux---CentOS数据库Mysql的安装
查看>>
1++NAT转换技术(SNAT、MASQUERADE、DNAT策略)及代理服务(squid服务)
查看>>
5++虚拟机三种网络模式以及设置步骤:桥接+NAT+Host-only
查看>>
6++总结BGP的属性,并写出其作用与用法
查看>>