SAP 演算法 求最大流 poj 3189 pku

2021-05-10 20:30:51 字數 943 閱讀 2339

#include

using namespace std;

int const maxn=1100;

int const maxm=50010;

int const oo=1234567890;

typedef struct

edge_t;

edge_t e[maxm];

int first[maxn];

int dist[maxn];

int now[maxn];

int pre[maxn];

int cnt[maxn];

int cur[maxn];

int capital[31];

int map[1100][31];

int n,b,m;

int tot;

int source,sink;

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

long long sap(int st,int ed)

now_flow = oo;

}break;

}t = e[t].next;

}if(found) continue;

if(--cnt[dist[i]] == 0) break;

min = n - 1;

t = first[i];

while(t != -1)

t = e[t].next;

}dist[i] = min + 1;

cnt[dist[i]]++;

if(i != st)

}return tot_flow;

}void build(int pl,int pr)

int main()

else pr++;

build(pl,pr);

}printf("%d/n",ans);

}

最大流SAP演算法

求最大流有一種經典的演算法,就是每次找增廣路時用bfs找,保證找到的增廣路是弧數最少的,也就是所謂的edmonds karp演算法。可以證明的是在使用最短路增廣時增廣過程不超過v e次,每次bfs的時間都是o e 所以edmonds karp的時間複雜度就是o v e 2 如果能讓每次尋找增廣路時的...

最大流SAP演算法

求最大流有一種經典的演算法,就是每次找增廣路時用bfs找,保證找到的增廣路是弧數最少的,也就是所謂的edmonds karp演算法。可以證明的是在使用最短路增廣時增廣過程不超過v e次,每次bfs的時間都是o e 所以edmonds karp的時間複雜度就是o v e 2 如果能讓每次尋找增廣路時的...

最大流之sap演算法

若有向圖g v e 滿足下列條件 1 有且僅有乙個頂點s,它的入度為 0 這個頂點稱為源點。2 有且僅有乙個頂點t,它的出度為 0 這個頂點稱為匯點。3 每一條弧都有乙個非負數,叫做這條邊的容量,邊 vi vj 的容量用 cij 來表示。則此有向圖稱為網路流圖,記為 g v e c 對於網路流圖g中...