描述
input format:
第1行: 兩個用空格分開的整數n (0 <= n <= 200) 和 m (2 <= m <= 200)。n是農夫john已經挖好的排水溝的數量,m是排水溝交叉點的數量。交點1是水潭,交點m是小溪。
第二行到第n+1行: 每行有三個整數,si, ei, 和 ci。si 和 ei (1 <= si, ei <= m) 指明排水溝兩端的交點,雨水從si 流向ei。ci (0 <= ci <= 10,000,000)是這條排水溝的最大容量。
output format:
輸出乙個整數,即排水的最大流量。
sample input
5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10
sample output
50dinic鄰接陣列的做法:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define min(a,b) a#define max(a,b) a>b?a:b
#define cl(a,num) memset(a,num,sizeof(a));
#define eps 1e-12
#define inf 0x7fffffff
const
double pi = acos(-1.0);
typedef __int64 ll;
const
int maxn = 300 ;
using
namespace
std;
int n , m;
int flow[maxn][maxn],dis[maxn] ;//dis[i],表示 到 原點 s 的 層數
int bfs()// 重新 建 圖 (按 層數 建圖)}}
if(dis[n] > 0) return
1; else
return
0 ;//斷層
}int dfs(int x,int mx)// 查詢路徑上的最小的流量
}return
0 ;}
int main()
int ans = 0;
int res;
while(bfs())
printf("%d\n",ans);
}}
模板題:
題目描述
如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。
輸入格式:
第一行包含四個正整數n、m、s、t,分別表示點的個數、有向邊的個數、源點序號、匯點序號。
接下來m行每行包含三個正整數ui、vi、wi,表示第i條有向邊從ui出發,到達vi,邊權為wi(即該邊最大流量為wi)
輸出格式:
一行,包含乙個正整數,即為該網路的最大流。
輸入輸出樣例
輸入樣例#1:
4 5 4 3
4 2 30
4 3 20
2 3 20
2 1 30
1 3 40
輸出樣例#1:
50 說明
時空限制:1000ms,128m
資料規模:
對於30%的資料:n<=10,m<=25
對於70%的資料:n<=200,m<=1000
對於100%的資料:n<=10000,m<=100000
樣例說明:
題目中存在3條路徑:
4–>2–>3,該路線可通過20的流量
4–>3,可通過20的流量
4–>2–>1–>3,可通過10的流量(邊4–>2之前已經耗費了20的流量)
故流量總計20+20+10=50。輸出50。
dinic 模板:
#include
#include
#include
#include
using
namespace
std;
const
int inf = 0x7fffffff;
int v, e,st,ed,cnt=0;
int level[10005],head[10005];
int si, ei, ci;
struct edgeedge[200100]; //....
void add_eg(int u,int v,int e)
void add(int u,int v,int e)
bool dinic_bfs() //bfs方法構造層次網路}}
return level[ed] != 0; //question: so it must let the sink node is the mth?/the way of yj is give the sink node's id
}int dinic_dfs(int u, int cp) }}
return tp;
}int dinic()
return sum;
}int main()
int ans = dinic();
printf("%d\n", ans);
return
0;}
Dinic模板 洛谷P3376
dinic演算法是網路流最大流的優化演算法之一,每一步對原圖進行分層,然後用dfs求增廣路。時間複雜度是o n 2 m dinic演算法最多被分為n個階段,每個階段包括建層次網路和尋找增廣路兩部分。dinic演算法的思想是分階段地在層次網路中增廣。它與最短增廣路演算法不同之處是 最短增廣路每個階段執...
P3376 模板 網路最大流dinic演算法
如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸出格式 一行,包含乙個正...
洛谷P3376 模板 網路最大流 Dinic模板
之前的dinic模板照著劉汝佳寫的vector然後十分鬼畜跑得奇慢無比,雖然別人這樣寫也沒慢多少但是自己的就是令人捉急。改成鄰接表之後快了三倍,雖然還是比較慢但是自己比較滿意了。雖然一開始ecnt從0開始wa了一發。之前的碼風也十分鬼畜呀縮排只縮1 2格不懂自己怎麼想的。反正今天就安心劃划水。inc...