#include #include using namespace std;
#define vertex 7 //頂點的個數
#define uint_max 0xffff
//圖/
// s a b c d e t
// s 0 3 1 0 0 0 0
// a 0 0 0 3 0 0 0
// b 0 0 0 5 4 0 0
// c 0 0 0 0 0 0 2
// d 0 0 0 0 0 2 0
// e 0 0 0 0 0 0 3
// t 0 0 0 0 0 0 0
//儲存流量
int capacity[vertex][vertex];
//是否已訪問
bool visited[vertex];
//儲存增廣路徑
int from[vertex];
//求最小值
int min(int x,int y)
} }now:
//計算增廣路線的最小流量
where = vertex-1;
path_cap = uint_max;
while(from[where]>-1)
//如果增廣路徑沒找到或者path_cap是uint_max
if(path_cap == uint_max)
return 0;
else return path_cap;
}//計算最大流
int max_flow()else
} return result;
}void main()
#include #include #include using namespace std;
#define vertex 7 //頂點的個數
#define uint_max 0xffff
//儲存流量
int capacity[vertex][vertex];
//是否已訪問
bool visited[vertex];
//儲存增廣路徑
int from[vertex];
typedef struct nodenode,*pnode;
//求最小值
int min(int x,int y)
//priority-first search (pfs)
int find_path()
visited[where] = true;
for(next=0;next0)
} }//更新殘餘網路
where = vertex-1;
while(from[where]>-1)
return path_cap;
}//計算最大流
int max_flow()else
} return result;
}void main()
參考:
最大流 最小割 附C 實現
b站 理解最大流 最小割定理 蔣炎巖 最後得出的推論 也是解決本問題的方法 我的總結 將有向邊的流量大小理解為節點之間的路徑個數 平行邊 最大流問題,即為找出起點與終點之間路徑的個數。c 語言實現 最大流 最小割 maximum flow minimum cut include include in...
模板 網路最大流 最大流
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...
模板 網路最大流 最大流
給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...