網路流常用演算法

2021-06-07 00:58:43 字數 1292 閱讀 7979

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無法進行下去的時候...