網路流 模板 洛谷P1343

2021-09-25 20:50:04 字數 1460 閱讀 6967

題目:

題目描述

汶川**發生時,四川**中學正在上課,一看**發生,老師們立刻帶領x名學生逃跑,整個學校可以抽象地看成乙個有向圖,圖中有n個點,m條邊。1號點為教室,n號點為安全地帶,每條邊都只能容納一定量的學生,超過樓就要倒塌,由於人數太多,校長決定讓同學們分成幾批逃生,只有第一批學生全部逃生完畢後,第二批學生才能從1號點出發逃生,現在請你幫校長算算,每批最多能運出多少個學生,x名學生分幾批才能運完。

輸入格式

第一行3個整數n,m,x(x<2^31,n<=200,m<=2000);以下m行,每行三個整數a,b,c(a1,a<>b,0描述一條邊,分別代表從a點到b點有一條邊,且可容納c名學生。

輸出格式

兩個整數,分別表示每批最多能運出多少個學生,x名學生分幾批才能運完。如果無法到達目的地(n號點)則輸出「orz ni jinan saint cow!」

輸入輸出樣例

輸入 #1 複製

6 7 7

1 2 1

1 4 2

2 3 1

4 5 1

4 3 1

3 6 2

5 6 1

輸出 #1 複製

3 3解題思路:

讀入資料,跑一次dinic,然後需要判斷maxflow > 0? , 若是大於0,則計算次數然後輸出,若是等於0,直接輸出對應的字串。

注意:maxflow==0的時候不能除!!!

ac**:

#include #include #include #include using namespace std;

typedef long long ll;

const int n = 300, m = 8000;

const ll inf = 0x3f3f3f3f3f3f3f3f;

int n, m, s, t;

int h[n], e[m], ne[m], idx;

int d[n];

ll maxflow, w[m], x;

inline void add(int a, int b, int c)

inline bool bfs(void)

} }if(d[t] == 0) return false;

return true;

}inline ll dinic(int u, ll flow)

} }return 0;

}int main(void)

ll flow = 0;

s = 1, t = n;

while(bfs())

while(flow = dinic(s, inf)) maxflow += flow;

if(maxflow > 0) else puts("orz ni jinan saint cow!");

// fclose(stdin);

return 0;

}

洛谷P1343 網路最大流

模板題,注意判斷最大流是否為0 連線 include include include include include include include include include include include include using namespace std typedef long lo...

洛谷P3376 最大網路流模板

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

洛谷P3381 MCMF 網路流

如題,給出乙個網路圖,以及其源點和匯點,每條邊已知其最大流量和單位流量費用,求出其網路最大流和在最大流情況下的最小費用。第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含四個正整數ui vi wi fi,表示第i條有向邊從ui出發,到達vi,邊...