分類: 2013程式設計之美挑戰賽
2013-07-20 20:59
112人閱讀收藏
舉報 程式設計之美挑戰賽
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
32 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:[cpp]view plain1 3case #2:
3 64 3
5 1case #3:
4 15 2
6 17 2
copy
print?
#include
#include
#include
#include
#include
using
namespace std;
const
int maxn=202;
int n,m,source,sink;
int c[maxn][maxn],vis[maxn],pre[maxn];
int ek() }
if(vis[sink])return low;
} return 0;
} int maxflow()
flow+=low;
} return flow;
} int main() }
//cout<<"maxflow is :"<}
return 0; }
#include #include #include #include #include using namespace std;
const int maxn=202;
int n,m,source,sink;
int c[maxn][maxn],vis[maxn],pre[maxn];
int ek()
{ memset(vis,0,sizeof(vis));
int low=(1<<30);
queueq;
q.push(source);
vis[source]=1;
pre[source]=-1;
while( !q.empty())
{ int u=q.front();
q.pop();
for(int i=1;i<=n;i++)
{ if(!vis[i]&&c[u][i]>0){
vis[i]=1;
pre[i]=u;
low=(low>t;
//fin>>t;
scanf ("%d",&t);
while(t--)
{ //cin>>n>>m;
//fin>>n>>m;
scanf ( "%d%d", &n, &m );
memset(c,0,sizeof(c));
int mflow=0;
cout<<"case #"<>x>>y>>z;
//fin>>x>>y>>z;
scanf ( "%d%d%d", &x, &y, &z );
c[x][y]+=z;
c[y][x]+=z;
source=1;
sink=n;
int curflow;
if(source==sink)
curflow=0;
else curflow=maxflow();
if(curflow>0){
cout<
有名管道管道程式設計
linux程序和程序之間有多種通訊方式。linux程序間通訊的主要方式有 1 無名管道 2 有名管道 3 訊號 4 訊息佇列 5 共享記憶體 6 訊號量 7 套接字 管道操作是比較簡單的通訊方式,乙個程序往管道中寫入資料,另乙個程序從管道中讀出資料。管道包括無名管道和有名管道。前者只能用於父程序和子...
Linux系統程式設計 管道和FIFO
ls wc l 為執行上述命令,shell建立了兩個程序來分別執行ls和wc。通過管道連線兩個程序。管道是單向的,允許資料從乙個程序流向另乙個程序。管道是乙個位元組流意味著在使用管道時不存在訊息或訊息邊界。從管道中讀取資料的程序可以讀取任意大小的資料塊,而不管寫入程序寫入管道的資料塊大小。通過管道的...
Linux系統程式設計之管道通訊
toc 侷限性 資料自己讀不能自己寫。資料一旦被讀走,便不在管道中存在,不可反覆讀取。由於管道採用半雙工通訊方式。因此,資料只能在乙個方向上流動。只能在有公共祖先的程序間使用管道。pipe的demo include include include include include include in...