POJ 1087 最大流 EK演算法

2022-06-09 10:15:11 字數 1149 閱讀 4535

#include#include#include#include#include#include#include#includeusing namespace std;

const int maxn=1003;

const int inf=0x3f3f3f3f;

int n,m;

int s,t;

int m1;

int k;

mapma;//裝置

struct edge

};vectoredges;//這裡的邊是實際邊數的兩倍,包括反向邊

vectorg[maxn];//鄰接表,g[i][j]表示結點i的第j條邊在edges陣列中的序號

int a[maxn];//a[i]表示起點到i的可改進量

int p[maxn];//edges陣列中的編號,最短路圖上p的入弧編號

void init(int n)

void addedge(int from, int to, int cap)

int maxflow(int s, int t)

}if (a[t]) break;

}if (!a[t]) break;

for (int u = t; u != s; u = edges[p[u]].from)

flow += a[t];

}return flow;

}int main()

cin>>m1;

for(int i=0;i>a>>b;

ma[a]=++numn;

if(!ma.count(b))

ma[b]=++numn;

addedge(ma[b],ma[a],1);

addedge(ma[a],t,1);

}cin>>k;

for(int i=0;i>a>>b;

if(!ma.count(a))

ma[a]=++numn;

if(!ma.count(b))

ma[b]=++numn;

addedge(ma[b],ma[a],inf);

}int ans=maxflow(s,t);

cout

return 0;

}

poj1087解題報告(最大流 EK演算法)

題目大意 題意 有n個不同的插座,有m臺不同的機器需要m種插頭,有k組轉換 插頭a能由插頭b轉換而來。問這些機器最少有幾台不能插上插座。解題思路 使用網路流,以裝置的插頭型別和插座的插頭型別組成乙個圖,建立超級源點,超級匯點,源點到裝置的流量為1,插座到匯點的流量為1,裝置和流量之間流量為無限大 可...

POJ 1087 網路流 最大流

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

poj 1273 最大流 EK演算法

最大流問題 從源點到終點運送貨物,經過一些中轉站,中轉站之間有路徑連線,每條路徑有運送貨物量的上限,求最多能運送多少貨物 找最大流就是每次找增廣路徑,並更新網路,直到找不到增廣路徑 includeusing namespace std const int max 201 const int inf ...