dinic网络流模板
src:源点
sink:汇点
- #include<queue>
- #include<iostream>
- #include<string.h>
- #include<stdio.h>
- using namespace std;
- const int inf = ;
- const int maxn = , maxm = ;
- struct Edge{
- int v, f, nxt;
- };
- int src, sink;
- int g[maxn + ];
- int nume;
- Edge e[maxm*+];
- void addedge(int u, int v, int c){
- e[++nume].v = v;
- e[nume].f = c;
- e[nume].nxt = g[u];
- g[u] = nume;
- e[++nume].v = u;
- e[nume].f = ;
- e[nume].nxt = g[v];
- g[v] = nume;
- }
- void init(){
- memset(g, , sizeof(g));
- nume = ;
- }
- queue<int> que;
- bool vis[maxn +];
- int dist[maxn + ];
- void bfs(){
- memset(dist, , sizeof(dist));
- while(!que.empty()) que.pop();
- vis[src] = ;
- que.push(src);
- while(!que.empty()){
- int u = que.front();
- que.pop();
- for(int i = g[u]; i; i = e[i].nxt)
- if(e[i].f && !vis[e[i].v]){
- que.push(e[i].v);
- dist[e[i].v] = dist[u] + ;
- vis[e[i].v] = true;
- }
- }
- }
- int dfs(int u, int delta){
- if(u == sink){
- return delta;
- }else{
- int ret = ;
- for(int i = g[u]; delta && i; i = e[i].nxt){
- if(e[i].f && dist[e[i].v] == dist[u] +){
- int dd = dfs(e[i].v, min(e[i].f, delta));
- e[i].f -= dd;
- e[i^].f += dd;
- delta -= dd;
- ret += dd;
- }
- }
- return ret;
- }
- }
- int maxflow(){
- int ret = ;
- while(true){
- memset(vis, , sizeof(vis));
- bfs();
- if(!vis[sink])return ret;
- ret += dfs(src, inf);
- }
- return ret;
- }
- int main(){
- int n, m;
- while(scanf("%d%d", &n, &m)!=EOF){
- init();
- src = ;
- sink = m;
- for(int i = ; i < n; i++){
- int x, y, z;
- scanf("%d%d%d", &x, &y, &z);
- addedge(x, y, z);
- }
- printf("%d\n", maxflow());
- }
- }
dinic网络流模板的更多相关文章
- POJ 1273 Drainage Ditches(网络流dinic算法模板)
POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...
- DINIC网络流+当前弧优化
DINIC网络流+当前弧优化 const inf=; type rec=record s,e,w,next:longint; end; var b,bb,d,q,tb:..] of longint; ...
- Power Network POJ - 1459 [网络流模板]
http://poj.org/problem?id=1459 嗯,网络流模板...多源点多汇点的图,超级汇点连发电厂,用户连接超级汇点 Status Accepted Time 391ms Memor ...
- POJ 1815 - Friendship - [拆点最大流求最小点割集][暴力枚举求升序割点] - [Dinic算法模板 - 邻接矩阵型]
妖怪题目,做到现在:2017/8/19 - 1:41…… 不过想想还是值得的,至少邻接矩阵型的Dinic算法模板get√ 题目链接:http://poj.org/problem?id=1815 Tim ...
- HDU1532最大流 Edmonds-Karp,Dinic算法 模板
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- hdu 2435 dinic算法模板+最小割性质
#include<stdio.h> #include<queue> #include<string.h> using namespace std; #define ...
- POJ 1273:Drainage Ditches 网络流模板题
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 63339 Accepted: 2443 ...
- POJ 3281 [网络流dinic算法模板]
题意: 农场主有f种食物,d种饮料,n头牛. 接下来的n行每行第一个数代表第i头牛喜欢吃的食物数量,和第i头牛喜欢喝的饮料数目. 接下来分别是喜欢的食物和饮料的编号. 求解:农场主最多能保证几头牛同时 ...
- 网络流dinic ek模板 poj1273
这里只是用来存放模板,几乎没有讲解,要看讲解网上应该很多吧…… ek bfs不停寻找增广路到找不到为止,找到终点时用pre回溯,O(VE^2) #include<cstdio> #incl ...
随机推荐
- BOM头问题
最近有不少在微博上谈论BOM头问题,BOM头会造成页面展示的乱码,xml分析出现问题.而我恰巧遇到一种情况,在wml页面中如果加上BOM头,PC浏览器(IE,火狐)和手机浏览器(UC)都很正常,而如果 ...
- 汇编下的i++与++i
故事背景,一个正在c语言的家伙,问我++i 和 i++的问题,我当时因为要去上课没给他说,正好今晚有空就测试了一下如下代码: 编译环境:VS2010 语言:C++ #include <iost ...
- C 简单单元测试框架
大约2年前,仿照GTEST写了个简单的C++单元测试框架. http://www.cnblogs.com/imlgc/archive/2012/02/09/2344506.html 后来用C写后台程序 ...
- 网站(Tomcat)超线程宕机
网站大中午的又挂了····· 拷了日志如下: 2014-4-12 13:22:30 org.apache.tomcat.util.net.JIoEndpoint createWorkerThread信 ...
- 怎样卸载goldengate
1. Log on to the database server (as oracle) where the GoldenGate software isinstalled.2. Change dir ...
- 深入剖析keil c51 --- 从汇编到c51
第一节 main()函数和启动代码 汇编是从org 0000h开始启动,那么keil c51是如何启动main()函数的?keil c51有一个启动程序startup.a51,它总是和c程序一起编译和 ...
- css设置水平垂直居中
关于CSS设置水平以及垂直居中的解决方案 想要水平居中? 内联的元素(文字)? .center-children { text-align: center;} 块级元素? .center-me { m ...
- 关于Action返回结果类型的事儿(下)
原文:关于Action返回结果类型的事儿(下) using System; using System.Collections.Generic; using System.Linq; using ...
- activity5 流程 入门
http://blog.csdn.net/yangyi22/article/details/9225849 谢谢原文作者提供!
- System.Drawing.Image.Save(Savepath),保存为jpg格式,参数错误,文件0kb解决办法
问题场景:asp.net给图片添加文字水印保存为jpg格式时出现标题所描述错误(图片为.jpg格式): 简单验证:用本机的画图程序打开,然后保存为jpg格式会出现警告框"画图程序不能存储该文 ...