1.bfs+dfs
intc[
201][
201],pre[
201],queue[
201],dis[
201]; //c為流地圖
bool
vis[
201];
intn,m,ans;
inline
intfind_min(
inta,
intb)
void
dfs(
ints) //s為開頭節點
ans+=
flow;i=
n;while
(i!=1)
}for
(inti=
1;i<=
n;i++)if
(c[pre[s]][s]
>0||
s==1)
if(c[s][i]
>0&&
dis[i]
==dis[s]+1
)}bool
bfs() //如果還存在增廣路
queue[1]
=1; vis[1]
=true
;head
=tail=1
;while
(head
<=
tail)
head++;
}return
vis[n];
}執行:while(bfs())dfs(開頭節點編號)
2.純bfs
intc[
201][
201],pre[
201],queue[
201];
bool
vis[
201];
intn,m,ans;
inline
intfind_min(
inta,
intb)
void
change()
ans+=
flow;i=
n;while
(i!=1)
}bool
bfs()
inthead=1
,tail=1
,now;
vis[1]
=true
; queue[1]
=true
;while
(head
<=
tail)
head++;
}return
vis[n];
}執行:while(bfs())change()
網路流演算法
問題描述 如圖4 1所示是聯結某產品地v1和銷售地v4的交通網,每一弧 vi,vj 代表從vi到vj的運輸線,產品經這條弧由vi輸送到vj,弧旁的數表示這條運輸線的最大通過能力。產品經過交通網從v1到v4。現在要求制定乙個運輸方案使從v1到v4的產品數量最多。圖 4 1 圖 4 2 一 基本概念及相...
網路流演算法
ek演算法模板 演算法複雜度 n m m n為點數,m為邊數 源點 1,匯點 n。const int maxn 310,inf 0x7fffffff int pre maxn mat maxn maxn bool vis maxn int n,m int augment else q.push ba...
網路流演算法
網路流演算法 網路流演算法用於解決從源點到匯點最大流的問題。edmonds karp演算法 演算法主要思想 每次bfs找到一條從源點到匯點的最少路徑數的可行路徑,同時把這條路徑塞滿,這條路上的最小容量即為這條路徑的流量。然後將這條路徑的正向邊刪除,增加一條容量相同的反向邊,當bfs無法進行下去的時候...