#include
#include
#include
//圖節點
typedef struct vertexnode
vertex,*pvertex;
//圖
typedef struct
graph,*pgraph;
//根據演算法導論 圖26-6初始化圖
pgraph initgraph()
for(int i=0;ivn;i++)
}
g->e[0][1]=16;
g->e[0][2]=13;
g->e[1][3]=12;
g->e[2][1]=4;
g->e[2][4]=14;
g->e[3][2]=9;
g->e[3][5]=20;
g->e[4][3]=7;
g->e[4][5]=4;
return g;
}
void initresidualnetwork(pgraph g)
} for(int i=0;ivn;i++)
}
}
} void initializepreflow(pgraph g,int s)
for(int i=0;ivn;i++)
} g->v[s]->h=g->vn;
for(int i=0;ivn;i++)
} } void push(pgraph g,int u,int v)
else
//更新超額流
g->v[u]->e-=d;
g->v[v]->e+=d;
//更新殘存圖
if(g->e[u][v]>0)
} //進入函式時,預設保證g->v[u]->e>0
//返回能從u進行push的鄰接頂點位置
//返回-1代表殘留圖中該頂點無鄰接點
int relabel(pgraph g,int u)
} } }
if(minhv[u]->h=minh+1;
return minpos;
} else//u沒有鄰接點時走到這裡
return -1;
} void printflow2(pgraph g)
} printf("\n");
for(int i=0;ivn;i++)
} } bool moreoperation(pgraph g,int s,int t)
} return false;
} void genericpushrelabel(pgraph g,int s,int t)
; }
void printflow(pgraph g)
} } int calcumaxflow(pgraph g,int s)
return maxflow;
}void main()
演算法導論之最大流
流網路g v,e 是乙個有向圖,其中每條邊 u,v e均有乙個非負能量c u,v 0。如果 u,v e,則假定c u,v 0。流網路中有兩個特點的頂點,源點s和匯點t,假定每個頂點均處於從源點到匯點的某條路徑上,就是說,對每個頂點v v,存在一條路徑s v t,因此圖g是連通圖,且 e v 1。設g...
演算法導論 最大流 Edmonds Karp演算法
華電北風吹 天津大學認知計算與應用重點實驗室 2016 07 20 有向圖的最大流演算法 模板。利用廣度優先搜尋尋找殘量網路增廣路。include include include using namespace std define maxn 10 define int min 0x80000000...
最大流演算法
基本的知識,解決什麼問題這些東西就不說啦。演算法導論和很多大神部落格都講解的很詳細。它其實就是不停的找增廣路直到找不到為止。此時通過的所有流量就是最大流量。ford fulkerson 最大流演算法 下面是我的實現。參考了最大流ford fulkerson的演算法實現 include include...