POJ1273 最大流模板
之前自己写的,以后当一个模板的基础吧,不管是最大流,最小割,二分图匹配
下面是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 最大流模板的更多相关文章
- 图论算法-最小费用最大流模板【EK;Dinic】
图论算法-最小费用最大流模板[EK;Dinic] EK模板 const int inf=1000000000; int n,m,s,t; struct node{int v,w,c;}; vector ...
- ZOJ_2314_Reactor Cooling_有上下界可行流模板
ZOJ_2314_Reactor Cooling_有上下界可行流模板 The terrorist group leaded by a well known international terroris ...
- Drainage Ditches---hdu1532(最大流, 模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 最大流模板题: EK:(复杂度为n*m*m); #include<stdio.h> ...
- HDU3376 最小费用最大流 模板2
Matrix Again Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)To ...
- HDU2686 费用流 模板
Matrix Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 【Luogu】P3376网络最大流模板(Dinic)
最大流模板成为另一个被攻克的模板题. 今天QDC给我讲了一下Dinic,感觉很好懂.于是为了巩固就把这道题A掉了. 核心思想就是不断BFS分层,然后不断DFS找增广路.找不到之后就可以把答案累加输出了 ...
- hdu4292 Food 最大流模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4292 题意:水和饮料,建图跑最大流模板. 我用的是学长的模板,最然我还没有仔细理解,不过这都不重要直接 ...
- HDU-3549Flow Problem 最大流模板题
传送门 这里是Ford-Fulkerson写的最大流模板 #include <iostream> #include <cstdio> #include <algorith ...
- 洛谷P3381 最小费用最大流模板
https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...
随机推荐
- 基于.net5 wtm框架、uni-app微信公众号开发一、公众号授权
前端公众号授权 公众号设置 0.首先用IIS创建一个空目录的网站用于公众号域名验证,接着把该网站内网穿透出去,推荐用utools工具,官网:https://u.tools/ 下载安装好后搜索内网穿透并 ...
- APM调用链产品对比
APM调用链产品对比 随着企业经营规模的扩大,以及对内快速诊断效率和对外SLA(服务品质协议,service-level agreement)的追求,对于业务系统的掌控度的要求越来越高,主要体现在: ...
- Java基础复习4
选择排序(擂台排序): public class demo1 { public static void main(String[] args) { // TODO Auto- ...
- 权限管理3-整合Spring Security
一.Spring Security介绍 1.框架介绍 Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Spring 框架,提供了一套 Web 应用安 ...
- Code Review 的几个技巧
No magic: Explicit not implicit: 覆盖度比深度重要,覆盖度追求100%: 频率比仪式感重要,坐公交蹲厕所打开手机都可以 Review 别人代码,不需要专门组织会议: 粒 ...
- 支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型
支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型 原创 杨翊(席翁) 阿里巴巴云原生 2020-12-28
- The Garbage Collection Handbook
The Garbage Collection Handbook The Garbage Collection Handbook http://gchandbook.org/editions.html ...
- 架构风格 vs. 架构模式 vs. 设计模式(译)
4.架构风格 vs. 架构模式 vs. 设计模式(译) - 简书 https://www.jianshu.com/p/d8dce27f279f
- (hive)hive优化(转载)
1. 概述 1.1 hive的特征: 可以通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析: 它可以使已经存储的数据结构化: 可以直接访问存储在Apac ...
- CF1433F Zero Remainder Sum
写在前面 思维难度不是很大的 DP,代码实现也很容易. 状态设计模式很套路,转移也很好理解. 算法思路 (因为 \(k\) 是常用的循环变量,下文中将题面中的模数改为 \(p\)) 虽然要求的是模 \ ...