Luogu P3376 模板 網路流 最大流

2022-02-27 11:20:32 字數 1735 閱讀 9189

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

輸入格式:

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

這是乙個單純的題目,優化都不用

= =然而我是對著劉汝佳寫過去的

網路流還是推薦紫書

1

//事先宣告,這份**並不是原創,只是將劉汝佳的進行風格轉化2//

陣列模擬版本鄰接表= =劉汝佳寫的雖然簡練但是我不是很習慣

3 #include4 #include5 #include6 #include7

#define maxn 10000000

8using

namespace

std;910

int inf = 2139999999;11

12struct

edgee[maxn];

1516

int tot = 2,first[maxn*4

];17

void insert(int u,int v,int

ccup)

3334

intpre[maxn],s,t,a[maxn],n,m;

35int maxflow(int s,int

t)55}56

57if(a[t]) break;58

}5960if(!a[t]) break;61

62for(int u = t;u != s;u =e[pre[u]].u)

6667 flow +=a[t];68}

6970

//for(int i = 0;i <= n;i++)cout << endl;

7374

return

flow;75}

7677

intmain()

8586 cout <

8788

//for(int i = 0;i <= tot;i++)

9192

return0;

93 }

心情仍然奇差無比

Luogu P3376 模板 網路最大流

傳送門 noip之前,我絕對不學網路流。我網路流可以解決這樣一類問題 給定乙個有向圖,每條邊有乙個流量上限,求從源點到匯點所能運輸的最大流量。解決這類問題的一種演算法叫做 dinic 一些性質 對於任意乙個時刻,設c u,v 為容量,f u,v 為實際流量,則整個圖g的流網路滿足3個性質 原理 假設...

luogu P3376 模板 網路最大流

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

洛谷 3376 網路流模板 EK Dinic

給你乙個網路圖,以及源點和匯點,求最大流先讀入乙個有向圖,記錄源點到每個節點的流量,每個節點的前驅 從匯點倒著用bfs尋找增廣路徑 1次只找一條 最後算出最大流 話說從源點開始,記錄後繼也可以 讀入順序 因為是單向圖,所以判斷now和i之間有連線時,只能取e now i include includ...