ACM學習 最大網路流

2021-07-05 09:45:59 字數 1614 閱讀 2167

// acm學習-最大網路流.cpp : 定義控制台應用程式的入口點。

//總體是通過一次一次迭代,每次迭代,首先建立乙個空佇列,再把

//源點加進去,從源點出發找到由它出發的邊組成的鍊錶的頭,遍歷該鍊錶

//如果鍊錶中的邊的容量沒有到達上限且目的點沒有被訪問過,我們就把它加入

//佇列中,且記下該點字首,依次從佇列中取元素直到隊列為空,或者到達終點

#include "stdafx.h"

#include

#include

using namespace std;

const int v = 7;

int neighbour[v][v] = ,//s

,//1

,//2

,//3

,//4

,//5

,//t

};struct edge;

edge edge[v];

int find_path(int n,int s,int t,int*pre)

l = l->link;}}

delete mark;

return 0;

}bool find_path1(int n, int s, int t, stack& sk)

}l = l->link;

}if (findpoint != -1)

else

}return false;

}int ford_fulkerson1(int n, int s, int t, int&f)

min = 10000;

int temp_t = t;

while (!sk.empty())

pre[temp_t] = sk.top();

temp_t = sk.top();

sk.pop();

}for (i = t; i != s; i = pre[i])

}for (int i = t; i != s; i = pre[i])

f += min;

deletepre;

return 1;

}int ford_fulkerson(int n, int s, int t, int&f)

//cout << "dd" << endl;

min = 10000;

for (i = t; i != s; i = pre[i])

}for (int i = t; i != s; i = pre[i])

f += min;

deletepre;

return 1;

}int _tmain(int argc, _tchar* argv)

else

edge*temp = new edge;

temp->dest = j;

head->link = temp;}}

}/*for (int i = 0; i < v; i++)

}cout << endl;

}*/int f = 0;

while (ford_fulkerson1(v,0,6,f));

cout << "max=" << f << endl;

return 0;

}

ACM學習 破壞行動 最大網路流

acm學習 破壞行動 最大網路流.cpp 定義控制台應用程式的入口點。define crt secure no warnings include stdafx.h include include include include using namespace std long n,m,s,t 記錄節...

最大網路流

求網路流有很多演算法,這幾天學習了兩種,記錄一下ek演算法。首先是網路流中的一些定義 v表示整個圖中的所有結點的集合.e表示整個圖中所有邊的集合.g v,e 表示整個圖.s表示網路的源點,t表示網路的匯點.對於每條邊 u,v 有乙個容量c u,v c u,v 0 如果c u,v 0,則表示 u,v ...

最大網路流

1 基本概念和術語 1 網路 g 是乙個簡單有向圖,g v,e v 在 v 中指定乙個頂點 s 稱為源 和另乙個頂點 t 稱為匯 有向圖 g 的每一條邊 v,w e 對應有乙個值 cap v,w 0 稱為邊的容量 這樣的有向圖 g 稱作乙個網路 2 網路流 網路上的流 是定義在網路的邊集合 e 上的...