【无源汇的上下界网络流】【模板】
2015-09-12 11:01
627 查看
上界改容量,下界先流走。
U -> V之间添加一条 cap - down的边
S->U 为U多出来的入的下界- 出的下界
V -> T 为V多出来的出的下界-入的下界
U -> V之间添加一条 cap - down的边
S->U 为U多出来的入的下界- 出的下界
V -> T 为V多出来的出的下界-入的下界
Max_Flow<int> MF; int n,m; const int maxn = 210; const int maxm = 40010; int a[maxn]; int id[maxm]; int up[maxm],down[maxm]; int main() { freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(scanf("%d%d",&n,&m) != EOF) { memset(res,0,sizeof(res)); MF.Init(n+4,1,2); memset(a,0,sizeof(a)); int u,v; for(int i=0;i<m;i++) { scanf("%d%d%d%d",&u,&v,&down[i],&up[i]); a[u] -= down[i]; a[v] += down[i]; id[i] = E^1; MF.Add_edge(u,v,up[i]-down[i]); } int sum = 0; for(int i=1;i<=n;i++) { if(a[i] > 0) { MF.Add_edge(0,i,a[i]); sum += a[i]; } else if(a[i] < 0) MF.Add_edge(i,n+1,-a[i]); } MF.Changenst(n+2,0,n+1); if(MF.Dinic() < sum) printf("NO\n"); else { printf("YES\n"); for(int i=0;i<m;i++) { printf("%d\n",down[i]+res[i]); } } } return 0; }
相关文章推荐
- 基于深层神经网络的命名实体识别技术
- socket,http,tcp区别
- 配置Tomcat使用https协议(配置SSL协议)
- Linux网络编程中服务端判断客户端断开连接。
- 数据挖掘(9):BP神经网络算法与实践
- 制作根文件系统:make[1]: *** [miscutils/ubi_tools.o] 错误 1 --来源于网络
- TCP/IP发送图片,swing.JPanel显示并更新图片(一、图片显示和更新)
- Java HTTP请求
- 【网络】(一)Socket 简介
- 解释器与编译器 (本文转自:http://blog.chinaunix.net/uid-22363424-id-113275.html)
- 使用HttpURLConnection(实现单线程多线程下载)
- Linux tcpdump命令详解
- C++ 用libcurl库进行http通讯网络编程
- 网络配置
- linux网络设置(有网卡别名介绍)
- thttpd增加gzip压缩响应报文体功能,以减少传输数据量
- 卷积神经网络的一些细节
- 利用iftop查看网络带宽使用情况
- Ubuntu实现网络链接设置
- 旧手机利用 第二弹 ——网络摄像头