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

下面是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. Spring Aop中四个重要概念,切点,切面,连接点,通知

    1. 通知: 就是我们编写的希望Aop时执行的那个方法.我们通过Aop希望我们编写的方法在目标方法执行前执行,或者执行后执行.2. 切点:切点就是我们配置的满足我们条件的目标方法.比如我们规定:名字前 ...

  2. windows_myql 安装与卸载详细讲解,

    windows_myql 安装 注意: 安装前把 所有杀毒软件,安全卫士等关闭. 打开下载的mysql安装文件双击解压缩,运行"mysql-5.5.40-win64.msi". 注 ...

  3. 推荐几个学习Python的免费网站

    想要学好Python,只靠看Python相关的书籍是远远不够的!今天为大家分享几个实用的Python学习网站. 欢迎各位热爱Python的小伙伴进群交流:610380249群里有大佬哦,而且很热心,群 ...

  4. 基于Vue的npm组件库

    前言(*❦ω❦) 思维导图可能有点高糊,有点太大了,项目和导图文件放到github或giteee上,这个思维导图也是我文章的架构,思维导图是用FeHelper插件生成的,这个是一款开源chrome插件 ...

  5. is_callable Callbacks / Callables What is a “callable”? 可调用 回调函数

    PHP: Callback / Callable 类型 - Manual https://www.php.net/manual/zh/language.types.callable.php Callb ...

  6. windows命令行关闭IE代理

    打开:reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnab ...

  7. centos7+python+selenium+chrome

    1.安装chrome yum install google-chrome 2.安装chromedriver所有版本的下载地址:https://sites.google.com/a/chromium.o ...

  8. LOJ2125

    LOJ2125 树上操作 题目描述 有一棵点数为 N 的树,以点 1 为根,且树有点权.然后有 M 个操作,分为三种: 把某个节点 x 的点权增加 aa . 把某个节点 x 为根的子树中所有点的点权都 ...

  9. 你真的知道为什么要使用void(0)代替undefined吗?

    我们平时用到的\(\color{#FF3030}{undefined}\)只是\(\color{#FF3030}{window}\)对象下的一个属性. Object.getOwnPropertyDes ...

  10. 最全面的图卷积网络GCN的理解和详细推导,都在这里了!

    目录 目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral doma ...