2013程式設計之美挑戰賽 管道系統

2021-06-16 23:49:55 字數 1811 閱讀 7557

分類: 2013程式設計之美挑戰賽

2013-07-20 20:59

121人閱讀收藏 

舉報程式設計之美挑戰賽

description

你正在參與一項輸油管道的專案,此專案的目標是架設一組輸油管道系統,使得從源頭到目的地輸送的石油流量最大。如果直接從源頭架設管道到目的地,一旦管道有損壞,將無法輸送石油。為了增強管道系統抵抗破壞的能力,你決定設定 n - 2 個中間節點,從而把管道分散開來。

源頭和目的地可以視為特殊的節點,他們的編號分別為 1 和 n,而其他的中間節點的標號為 2 到 n - 1。每條管道有特定的流量限制 c,石油可以以不超過 c 的速率在管道內流動。兩個節點之間至多由一條管道連線,也就是說這兩個節點之間單位時間內流動的石油不超過 c。

現在你們已經選定了 n 個節點,並且制定好了建設計畫。你想知道,每當一條管道建造完成,從節點 1 到節點 n 最大流量能夠增加多少。

input

輸入包括多組資料。第一行是整數 t,表示有多少組測試資料。每組測試資料的第一行包括兩個整數 n 和 m,表示節點的數量和將要建造的管道數量。接下來 m 行按建造順序描述每條管道,每行包括三個整數 i, j, c,表示要在節點 i 和 j 之間建造一條容量為 c 的管道。

1 ≤ t ≤ 100 

0 ≤ m ≤ n(n - 1)/2 

1 ≤ v ≠ u ≤ n 

1 ≤ c ≤ 100 

小資料:2 ≤ n ≤ 20 

大資料:2 ≤ n ≤ 200

output

對於每組測試資料,先輸出一行「case #c:」,其中 c 為測試資料編號(從 1 開始)。緊接著按建造順序輸出使得總流量增加的管道編號和相應的增加量,以乙個空格隔開。

sample input

3

2 11 2 3

4 51 2 9

2 3 7

3 4 6

2 4 4

1 3 1

5 71 2 1

1 3 2

1 4 3

2 5 4

3 2 3

4 3 3

3 5 2

sample output

case #1:

1 3case #2:

3 64 3

5 1case #3:

4 15 2

6 17 2

[cpp]view plain

copy

print?

#include 

#include 

#include 

#include 

#include 

using

namespace

std;  

const

intmaxn=202;  

intn,m,source,sink;  

intc[maxn][maxn],vis[maxn],pre[maxn];  

intek()  

}  if(vis[sink])

return

low;  

}  return

0;  

}  int

maxflow()  

flow+=low;  

}  return

flow;  

}  int

main()  

}  //cout<<"maxflow is :"<

}  return

0;  

}  

大資料貌似要超時。暫時未想到優化的方法。

2013程式設計之美挑戰賽 集會

description 在一條河的一側,分布著 n 個村莊。這些村莊平日裡需要一些 往來,然而商人們來回走遍每一座村莊是非常辛苦的,於是他們決定每個月都在河邊舉行一次集會,大家都來集會上購買需要的物品。然而在集會地點的選擇上,大家卻有分歧,因為誰都不願意集會的地點離自己村莊非常遠。經過一番激烈的討論...

2013程式設計之美全國挑戰賽

description alice和bob都要向同乙個商人購買鑽石。商人手中有 n 顆鑽石,他會將它們一顆顆地賣給他們,alice和bob通過競價的方式來決定鑽石的歸屬。具體的過程如下 商人首先指定其中乙個人開始 之後兩人輪流 要求是一定要比對方報的 更高。任何時候,如果乙個人不願出價或者出不起價錢...

2013程式設計之美全國挑戰賽

description 對於兩個長度相等的字串,我們定義其距離為對應位置不同的字元數量,同時我們認為距離越近的字串越相似。例如,0123 和 0000 的距離為 3,0123 和 0213 的距離則為 2,所以與 0000 相比,0213 和 0123 最相似。現在給定兩個字串 s1 和 s2,其中...