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

下面是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. JavaScript小记

    JavaScript小记 1. 简介 1. 语言描述 JavaScript 是一门跨平台.面向对象的弱类型动态脚本编程语言 JavaScript 是一门基于原型.函数先行的语言 JavaScript ...

  2. SpringBoot @Value 解析集合配置

    引自:https://jitwxs.cn/d6d760c4.html 一.前言 在日常开发中,经常会遇到需要在配置文件中,存储 List 或是 Map 这种类型的数据.Spring 原生是支持这种数据 ...

  3. Android 开发学习进程0.27 kotlin使用 和viewbinding的使用

    kotlin-android-extensions 插件被废弃 笔者曾经尝试写过一部分的kotlin代码 主要是项目中一些代码是kotlin完成的,其中我认为 kotlin的kotlin-androi ...

  4. Linux安装Oracle数据库SQLPlus客户端

    安装 RPM包下载地址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html ...

  5. 基于final shell的linux命令

    final shell操作教程: 1.查看API实时日志:cd ../../data/log/api tail -100f anyAPI-server.log2.关闭日志:control+c3.恢复实 ...

  6. testng学习笔记-- beforesuit和aftersuit

    一.定义 测试套件,主要关注执行顺序 套件:suit可以包含多个class 二.代码标签 三.运行结果

  7. Oracle19c的多租户笔记

    Oracle19c的多租户笔记 1.多租户的概念 PDB(PLUGGABLE DATABASE)可以理解为我们Oracle11gR2的数据库,只不过是一个实例上面可以放置多个数据库了.名称为插件式数据 ...

  8. 1、剑指offer-数组——二维数组中的查找

    *题目描述* **在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含 ...

  9. 使用Linux服务器来通过网络安装和激活Windows 7 —— 一些基本原理

    使用Linux服务器来通过网络安装和激活Windows 7 -- 一些基本原理 https://www.pufengdu.org/blog/?p=372

  10. java中List元素移除元素的那些坑

    https://blog.csdn.net/javageektech/article/details/96668890  List  的迭代器类 采用倒序移除 jdk1.8的写法 public sta ...