poj 3436 網路流基礎題

2021-08-10 14:13:29 字數 1195 閱讀 3640

[

題目鏈結

]()題意: 題意確實難讀。

首先給出p,n 兩個數 表示有p臺工具機來組裝電腦,每台電腦有n個零件需要組裝

接著p行,每行描述一台工具機 共2*n+1個數字,

第乙個數字表示每單位時間該工具機能處理多少未完成品

接下來n個數字表示該工具機能接受的未完成品型別 0表示該零件不能存在 1表示該零件必須存在 2表示該零件可存在

最後n個數字表示處理後 未完成品是什麼樣的。

問怎麼樣用這些工具機構成生產線 使得單位產量最大

最後要你列印路徑。

寫的第一道不是那麼裸的網路流題目,因為要列印路徑 所以不能直接套模板。

先按老套路,拆點建邊。

建好圖之後,跑一遍網路流。

然後再遍歷一遍原來的邊,如果這條邊有用的話,那他的流量肯定小於容量,把這些邊全部找出來就行。

#include#include#include#include#include#include#define for(a,b,c) for(a=b;a<=c;a++)

#includeusing namespace std;

int n,m;

int val[300];

const int inf = 0x3f3f3f3f;

const int mx=300 ;

const int mxe= 4 * mx * mx;

struct edge ;

struct maxflow

void add(int u, int v, int w)

int d[mx], vis[mx], gap[mx];

void bfs() }}

}int last[mx];

int dfs(int u, int f)

}if (d[s] >= num) return sap;

if (!(--gap[d[u]])) d[s] = num;

++gap[++d[u]];

last[u] = head[u];

return sap;

}int solve(int st, int ed, int n)

void slove(vector&v) {

for(int i=0;im) continue;

if(edge[i].wans;

f.slove(ans);

cout<<" "<

POJ 3436網路流 拆點 簡單處理

寫的第一道網路流。非板題。網路流貌似核心是在於建圖的處理。poj 3436 看了題解才做出來。要求規劃出合法生產線,這種形式基本就和網路流相關了。具體題意是 有乙個產品,有k個部件,給出n臺機器,每台機器接受一定的半成品,輸出新的半成品。最終成品是全部部件都在的成品。每個機器都有單位時間最大生產量,...

POJ 3436 網路流 最大流 輸出路徑

這裡的輸出路徑不太理解 include include include include include include include includeusing namespace std const int maxn 110 const int inf 0x3f3f3f3f int p1,n,m ...

POJ 1087 網路流 最大流

設定源點和匯點,每個需要使用的裝置插座,連線源點到該插座的裝置個數,連線會場提供插座到匯點,容量為個數,然後連線插座轉換邊,容量為無窮 注意轉換插座可能是之前沒出現過的 include include include include include include include include i...