之前自己写的,以后当一个模板的基础吧,不管是最大流,最小割,二分图匹配

下面是POJ1273的一个裸题..

 1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <vector>
5 #include <queue>
6 using namespace std;
7 struct node{
8 int to,cap,rev;
9 node(int _to,int _cap,int _rev):to(_to),cap(_cap),rev(_rev){}
10 };
11 const int maxn=1005;
12 vector<node> G[maxn];
13 int s,t;
14 void add(int u,int v,int cap){
15 G[u].push_back(node(v,cap,G[v].size()));
16 G[v].push_back(node(u,0,G[u].size()-1));
17 }
18 bool vis[maxn];//这个可以不要,level数组可以起两个作用,记录层数和是否被访问过,类似于dp数组
19 int level[maxn],iter[maxn];
20 void bfs(){
21 memset(level,-1,sizeof(level));
22 queue<int> q;
23 q.push(s);int i;level[s]=0;
24 while(!q.empty()){
25 int u=q.front();
26 q.pop();
27 for(i=0;i<G[u].size();++i){
28 node& e=G[u][i];
29 if(e.cap>0&&level[e.to]<0){
30 level[e.to]=level[u]+1;
31 q.push(e.to);
32 }
33 }
34 }
35 //需要得到所有顶点的level信息,一方面起vis的作用,另一方面起到转移的作用
36 //而且考虑到可能同时存在多个最短增广路
37 }
38 int dfs(int v,int t,int f){
39 //printf("v:%d t:%d f:%d\n",v,t,f);
40 if(v==t) return f;
41 for(int &i=iter[v];i<G[v].size();++i){
42 node &e=G[v][i];
43 if(e.cap>0&&level[e.to]>level[v]){
44 int d=dfs(e.to,t,min(e.cap,f));
45 if(d>0){
46 e.cap-=d;
47 G[e.to][e.rev].cap+=d;
48 return d;
49 }
50 }
51 }
52 return 0;//这里忘记return 0了...
53 }
54 const int INF=~0u>>1;
55 int maxflow(){
56 int flow=0,f;
57 for(;;){
58 bfs();
59 if(level[t]<0) return flow;
60 memset(iter,0,sizeof(iter));
61 while((f=dfs(s,t,INF))>0) flow+=f;
62 }
63 }
64 //直觉上 容量种数越少越快
65 int main(){
66 //freopen("testMaxFlow.txt","r",stdin);
67 int n,i,u,v,cap,m;
68 while(~scanf("%d%d",&m,&n)){
69 s=1;t=n;
70 for(int i=1;i<=n;++i) G[i].clear();//多组数据要清空边
71 for(i=0;i<m;++i){
72 scanf("%d%d%d",&u,&v,&cap);
73 add(u,v,cap);
74 }
75 printf("%d\n",maxflow());
76 }
77 return 0;
78 }

POJ1273 最大流模板的更多相关文章

  1. 图论算法-最小费用最大流模板【EK;Dinic】

    图论算法-最小费用最大流模板[EK;Dinic] EK模板 const int inf=1000000000; int n,m,s,t; struct node{int v,w,c;}; vector ...

  2. ZOJ_2314_Reactor Cooling_有上下界可行流模板

    ZOJ_2314_Reactor Cooling_有上下界可行流模板 The terrorist group leaded by a well known international terroris ...

  3. Drainage Ditches---hdu1532(最大流, 模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 最大流模板题: EK:(复杂度为n*m*m); #include<stdio.h> ...

  4. HDU3376 最小费用最大流 模板2

    Matrix Again Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others)To ...

  5. HDU2686 费用流 模板

    Matrix Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  6. 【Luogu】P3376网络最大流模板(Dinic)

    最大流模板成为另一个被攻克的模板题. 今天QDC给我讲了一下Dinic,感觉很好懂.于是为了巩固就把这道题A掉了. 核心思想就是不断BFS分层,然后不断DFS找增广路.找不到之后就可以把答案累加输出了 ...

  7. hdu4292 Food 最大流模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4292 题意:水和饮料,建图跑最大流模板. 我用的是学长的模板,最然我还没有仔细理解,不过这都不重要直接 ...

  8. HDU-3549Flow Problem 最大流模板题

    传送门 这里是Ford-Fulkerson写的最大流模板 #include <iostream> #include <cstdio> #include <algorith ...

  9. 洛谷P3381 最小费用最大流模板

    https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...

随机推荐

  1. Java基础复习2

    三目运算符 语法:条件判断?表达式1:表达式2; 如果条件判断成立则获取值1否则获取值2 public class demo1{     public static void main(String[ ...

  2. atlas读写分离

    Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug ...

  3. Linux Centos7之由Python2升级到Python3教程

    1.先查看当前系统Python版本,默认都是Python2.7,命令如下: [root@localhost gau]# python -V Python 2.7.5 2.安装Python3,安装方法很 ...

  4. Python Pandas操作Excel

    Python Pandas操作Excel 前情提要 ☟ 本章使用的 Python3.6 Pandas==0.25.3 项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日 ...

  5. JavaScript小案例-阶乘!

    JavaScript小案例-阶乘! 阶乘:就是像台阶一样一阶一阶的,从高阶到低阶,依次乘下来!代码超少!容易理解! // factorial 阶乘 // 如果 function factorial(n ...

  6. (012)每日SQL学习:TO_CHAR(DATE,FORMAT)

    SYSDATE 2009-6-16 15:25:10 TRUNC(SYSDATE) 2009-6-16 TO_CHAR(SYSDATE,'YYYYMMDD') 20090616 到日 TO_CHAR( ...

  7. js控制页面元素值

    // TODO id 定位 var ele1 = document.getElementById("test1"); // alert(ele1.value) // TODO 根据 ...

  8. HTML5 使用浏览器内置数据库之 indexedDB

    indexedDB是H5规范里的浏览器内置数据库,是nosql数据库的一种.因为另一种数据库Web SQL不再受W3C支持,所以还得学习下这个. 基本情况 兼容性:ie11及以上都支持, W3C是这么 ...

  9. Nginx配置WebSocket反向代理(Tomcat+Nginx)

    @toc WebSocket 和HTTP协议不同,但是WebSocket中的握手和HTTP中的握手兼容,它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket.这使得WebSo ...

  10. Leetcode LRU缓存,数组+结构体实现

    一.算法思路 LRUCache类有以下函数和变量: LRUCache(int capacity): capacity是当前对象能够存储的键值对(key,value)最大个数. int get(int ...