最大流ISAP 洛谷P3376模板題

2022-05-29 04:00:12 字數 1754 閱讀 8654

如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。

輸入格式:

第一行包含四個正整數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。

題解

就是最大流的模板題。。。

isap的板子先貼在這裡。。。

雖然平時都用dinic就是了。。。

**

//

by 減維

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define maxn 100005

#define inf 1<<30

using

namespace

std;

struct

edgee[maxn

<<1

];int n,m,s,t,ecnt=1

,head[maxn],cur[maxn],gap[maxn],level[maxn];

void add(int x,int y,int

v)void

bfs()

}int isap(int x,int

maxflow)

--gap[level[x]];

if(!gap[level[x]])level[s]=n+1

; ++gap[++level[x]];

cur[x]=head[x];

return

used;

}int

main()

bfs();

int ans=0

;

while(level[s]1)ans+=isap(s,inf);

printf("%d

",ans);

return0;

}

洛谷P3376 模板 網路最大流 Dinic模板

之前的dinic模板照著劉汝佳寫的vector然後十分鬼畜跑得奇慢無比,雖然別人這樣寫也沒慢多少但是自己的就是令人捉急。改成鄰接表之後快了三倍,雖然還是比較慢但是自己比較滿意了。雖然一開始ecnt從0開始wa了一發。之前的碼風也十分鬼畜呀縮排只縮1 2格不懂自己怎麼想的。反正今天就安心劃划水。inc...

洛谷P3376 模板 網路最大流

如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸出格式 一行,包含乙個正...

洛谷 P3376 模板 網路最大流

題目描述 如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸出格式 一行,...