網路流24題 COGS 750 柵格網路流

2022-02-11 12:10:23 字數 1972 閱讀 2275

★★☆   輸入檔案:flowa.in輸出檔案:flowa.out簡單對比

時間限制:1 s   記憶體限制:128 mb

【問題描述】

bob 覺得一般圖的最大流問題太難了,他不知道如何解決,於是他想嘗試乙個簡單點的:柵格網路中的最大流問題,這個雖說簡單了一點,但對 bob 來說依舊太難,現在他有個麻煩需要你幫忙:給你乙個 n*m 的柵格(如下所示),柵格中的邊表示可以流水的管道,邊上的數字表示管道的容量,舉例說明:在下面圖( 2.6.1 )中, (0,0) 和 (1,0) 之間邊的容量為 6 ,這意味著這條邊(水管)的最大水流量不超過 6 個單位。

n=3 m=3

圖 2.6.1 柵格網路流

那麼柵格中從 s 到 t 的最大流是多少呢 ? 換句話說 , 某一時刻最多能有多少單位的水從 s 流向 t?

【輸入格式】

輸入檔案的第一行是乙個正整數 t ,表示接下來有多少組測試資料。

每一組測試資料的第一行有兩個正整數 n,m(1<=n,m<=100)

接著有兩個矩陣h(n*(m-1)),v((n-1)*m),h[i][j]表示(i,j)->(i,j+1)的流量;

v[i][j]表示(i,j)->(i+1,j)的流量。

【輸出格式】

每一組測試資料輸出只有一行,包含乙個整數,即從 s(0,0) 到 t(n-1,m-1) 的柵格網路的最大流,不允許出現多餘的空格。

【輸入樣例】

輸入檔名: flowa .in

13 3

0 12 3

4 56 7 8

9 10 11

輸出檔名: flowa .out

6n=3 m=3

圖 2.6.2 乙個解決方案

1/*2

網格圖的最小割問題

3很明顯如果寫最大流一定會超時,所以可以利用最大流最小割定理解決。

4我們可以在某條邊i的兩側加兩個點,連一條邊j,使兩條邊切割,這樣建圖的話,最小割就等於新圖的最短路,

5只要多加起點和終點就可以跑最短路了。

6dijkstral+堆優化

7用最短路來處理 最小割 好像只適用於 網格最小割 8*/

9 #include10 #include11 #include12 #include13 #include14

using

namespace

std;

15#define n 20010

16#define inf 100000000000000ll

17#define ll long long

18int

head[n],n,m,tot,ans,s,t; ll dis[n];

19struct

edgee[n*4

];22

int make_hao(int i,int j)

23void add_edge(int u,int v,int

w)27

void

dijkstra()39}

40}41 cout<

43void

solve()

52for(int i=2;i<=n;i++)

53for(int j=1,x;j<=m;j++)

58for(int i=2;i<=m;i++)add_edge(s,i,0

);59

for(int i=2*m+2;i<=t-2;i+=(m+1))add_edge(s,i,0

);60

for(int i=m+2;i<=t-2;i+=(m+1))add_edge(i,t,0

);61

for(int i=n*(m+1)+2;i<=t-2;i++)add_edge(i,t,0

);62

dijkstra();63}

64int

main()

72return0;

73 }

COGS461 網路流24題 餐巾

問題描述 乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f 3 把餐巾送到慢洗部,洗一塊需n天 n m 費用需s分 s在每天結束時,餐廳必須決定多少塊用過的餐巾送到快洗部,...

網路流 24 題

1 搭配飛行員 題意 n個飛行員,其中有m名飛行員是正駕駛員。飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。思路 裸二分圖匹配 最大流 題 版本一 網路流做法 引入源點s 0以及匯點t n...

網路流24題

學會網路流演算法後,我們要做的就是把問題轉化成網路流問題。求二分圖最大匹配。網路流建模要找到問題的關鍵特點,用連邊,流量 以及費用 把原問題轉化成網路流問題,包括最大流,最小割,費用流。二分圖最大匹配的特點是每個點最多屬於一條匹配邊。這相當於是說,每個點只能流過一次。要求的是最大匹配,可以得出建模為...