破壞石油運輸系統問題

2022-05-31 12:03:13 字數 1617 閱讀 9731

某組織打算摧毀發爛稀國的石油運輸系統。該系統可以看成乙個運輸網路,由許多結點和連線結點的管道組成。只有地點a生產石油,生產的石油通過管道運輸到地點b,石油不能在中間點累積。管道是雙向的,每條管道連線兩個不同的結點,每兩個結點之間只有一條管道連線。每條管道有乙個抗壓指數,當石油的流量超過這個數管道就會**。a地生產石油的速度是很快的,但由於抗壓指數的問題,能運到b的有乙個上限。發爛稀國比較貪婪,他們採用了使他們獲得最多石油的運輸方案。某組織有乙個特殊的物質,能使一條管道的抗壓指數下降1。作為該組織的首席程式設計師,你的任務就是告訴領導,讓那些管道的抗壓指數下降,一定可以摧毀發爛稀國的石油運輸網路。

第1行包含四個整數n,m,s,t,表示有n個結點(編號為1,2,3,……,n),m條管道,s和t分別是a地和b地的編號。2<=n<=130, 0<=m<=n (n-1)/2, 1<= s,t <= n。

接下來m行,每行描述一條管道,包含3個整數i, j, c。i, j 分別為管道連線的2個結點。c為該條管道的抗壓指數。1<=i, j<=n, 1<=c <=10000。

第1行輸出抗壓指數減少1就**的管道的條數k。

接下來k行每行輸出乙個整數p(1<=p <=m),說明第p條管道如果抗壓指數減少1就必定**。序號p按照管道輸入的順序,並按照p的公升序輸出。

先dinic求最大流,最大流的殘量網路中用傳遞閉包找不通的路。dinic時間複雜度(n^2*m)

#include#include

//#include

using

namespace

std;

//ifstream fin("cin.in");

intn,m,s,t;

int lin[131][131]=,g[9000][3]=;

int cf[131][131]=;

int d[131]=;

bool vis[131]=;

bool

dinic()

} return0;

} int findflow(int node,int

flow)

return0;

} intmain()

while

(dinic())

while(findflow(s,0xfffffff

));

int ans=0

;

for(int i=1;i<=m;++i)

for(int k=1;k<=n;++k)

for(int i=1;i<=n;++i)

for(int j=1;j<=n;++j)

cf[i][j]=max(cf[i][j],cf[i][k]&cf[k][j]);

for(int i=1;i<=m;++i)

if(cf[g[i][1]][g[i][2]]==0||cf[g[i][2]][g[i][1]]==0

) ans++;

cout

for(int i=1;i<=m;++i)

if(cf[g[i][1]][g[i][2]]==0||cf[g[i][2]][g[i][1]]==0

) cout

//system("pause");

return0;

}

Rqnoj 306 破壞石油運輸系統問題

破壞石油運輸系統問題 網路流題,關鍵在於,此題求的不是飽和弧,可能存在的情況是 存在兩條流量相同的並行路徑,正確的做法是 把非飽和弧連上,建乙個圖,則一條滿足條件的路徑應該是兩端點不連通 顯然是floyed 如下 var a,b,c,d array 1.10000 of longint map ar...

日系化妝品受震後運輸影響 部分商家開始囤貨

新民網 獨家報道 受日本特大 影響,目前滬上日系品牌化妝品 基本正常,但部分熱銷單品,商家已開始逐步囤貨。3月15日,新民網記者走訪了滬上一些商場內化妝品櫃檯。日系進口化妝品如資生堂 佳麗寶 dhc等的 情況基本正常。浦東第一八佰伴資生堂化妝品櫃檯銷售人員表示,該櫃檯只有三款是全日進口產品,其他是產...