最大流Dinic模板

 1 int bfs()
 2 {
 3     queue<int>q;
 4     memset(d,0,sizeof(d));
 5     d[1]=1;
 6     q.push(1);
 7     while (!q.empty())
 8     {
 9         int u=q.front();
10         q.pop();
11         for (int i=head[u];i!=-1;i=eage[i].next)
12         {
13             int v=eage[i].v;
14             if (!d[v]&&eage[i].cap>0)
15             {
16                 d[v]=d[u]+1;
17                 q.push(v);
18             }
19         }
20     }
21     return d[n];
22 }
23
24 int dfs(int u,int w)
25 {
26     if (u==n||w==0) return w;
27     int ans=0;
28     for (int i=head[u];i!=-1;i=eage[i].next)
29     {
30         int v=eage[i].v;
31         if (d[u]==d[v]-1&&eage[i].cap>0)
32         {
33             int temp=dfs(v,min(w,eage[i].cap));
34             eage[i].cap-=temp;
35             eage[i^1].cap+=temp;
36             w-=temp;
37             ans+=temp;
38         }
39     }
40     return ans;
41 }
42
43 int dinic()
44 {
45     int ans=0;
46     while (bfs()) ans+=dfs(1,10000000);
47     return ans;
48 }
时间: 2024-10-13 07:10:28

最大流Dinic模板的相关文章

[POJ 1273] Drainage Ditches &amp; 最大流Dinic模板

Drainage Ditches Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to regrow. Thus, Farmer John has built a

网络流--最大流dinic模板

标准的大白书式模板,除了变量名并不一样……在主函数中只需要用到 init 函数.add 函数以及 mf 函数 1 #include<stdio.h> //差不多要加这么些头文件 2 #include<string.h> 3 #include<queue> 4 #include<vector> 5 #include<algorithm> 6 using namespace std; 7 const int maxm=150+5; //点的总数 8

网络流-最大流 Dinic模板

1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 #define MP make_pair 6 #define PB push_back 7 #define ls first 8 #define rs second 9 typedef long long LL; 10 typedef pair<int,int> PII; 11 const double eps=1e-8; 12 const double pi=acos(

网络最大流dinic模板

#include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; queue<int>q; int INF=1e9; int n,m,head[10005],cur[10005],ct=1,s,t,d[10005],ans; struct N{ int to,next,w; }edge[200005]; void add(int x

最大流 Dinic + Sap 模板

不说别的,直接上模板. Dinic+当前弧优化: struct Edge{ int x,y,c,ne; }e[M*2]; int be[N],all; int d[N],q[N]; int stack[N],top;//栈存的是边 int cur[N];//当前弧优化 void add(int x, int y, int z)//需保证相反边第一个为偶数 { e[all].x=x; e[all].y=y; e[all].c=z; e[all].ne=be[x]; be[x]=all++; e[a

洛谷P3376【模板】网络最大流  Dinic模板

之前的Dinic模板照着刘汝佳写的vector然后十分鬼畜跑得奇慢无比,虽然别人这样写也没慢多少但是自己的就是令人捉急. 改成邻接表之后快了三倍,虽然还是比较慢但是自己比较满意了.虽然一开始ecnt从0开始WA了一发... 之前的码风也十分鬼畜呀缩进只缩1.2格不懂自己怎么想的.. 反正今天就安心划划水. #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #in

最大流dinci模板

我们知道,增广路EK算法的时间负责度是O(n*m^2),找最短增广路的时间复杂度是O(m*n),所以时间复杂度主要是在找增广路上. 这里介绍另一种Dinci算法,用BFS构造层次图,然后用DFS增广. 模板 #include <cstdio> #include <cstring> #include <iostream> #include <string> #include <algorithm> #include <vector> #

poj-1459-最大流dinic+链式前向星

title: poj-1459-最大流dinic+链式前向星 date: 2018-11-22 20:57:54 tags: acm 刷题 categories: ACM-网络流-最大流 概述 这道是一道网络流里最大流的板子题,,, 暑期集训网络流草草水过,,连基本的算法都不知道有哪些,,,更别提怎么实现了,,,只知道网络流的大致的概念,, 今天花了一天的时间重新学习了一波,,,本以为这东西很简单,,,没想到不仅算法的实现一大堆的东西,,就连题目都有时候看不懂,,,,感受就是网络流的题不仅算法实

POJ 1273 Drainage Ditches (网络流Dinic模板)

Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to regrow. Thus, Farmer John has built a set of drainage