網路流 最小割

2021-08-20 06:59:58 字數 860 閱讀 3299

割是一種對網路流點的劃分方式

對於乙個網路流圖g(v,e),劃分為s和t兩部分,其中t=v-s,源點s∈s,匯點t∈t

淨流f(s,t)表示穿過割(s,t)的流量之和

f(s,t)=σf(u,v) | u∈s,v∈t

割的容量c(s,t)為所有從s到t的邊容量之和

c(s,t)=σc(u,v) | u∈s,v∈t

f(s,t)算穿過割(s,t)的正反向邊,而c(s,t)只算正向邊

最小割指容量最小的可能的割

對於乙個網路流圖g(v,e),最大流的值等於最小割的容量

在學習最大流時,可以使用增廣路演算法來求最大流,但是增廣路演算法都是在找不到增廣路時,就得出了最大流的值。

若殘留網路gf不存在增廣路,則gf中不存在路徑從s到達t

定義s集合為:殘留網路中s可到達的點

(s,t)構成乙個割(s,t)

若f(u,v)小於c(u,v),則gf(u,v)>0,與上述「不存在路徑從s到達t」矛盾

所以f(s,t)=c(s,t)

因為f(s,t)《最小割,又因為f(s,t)=c(s,t)

所以f(s,t)為最大流

據「最大流最小割定理」,可使用求最大流的演算法求最小割

這裡使用dinic演算法求最小割

void

bfs(

) qh++;}

if(h[n]!=-

1) flag=

true;}

intdfs

(int k,

int delta)}if

(!ma) h[k]=-

1;return ma;

}

網路流 最小割

標籤 網路流 最小割 原題 洛谷p2057 善意的投票 題目描述 幼兒園裡有n個小朋友打算通過投票來決定睡不睡午覺。對他們來說,這個問題並不是很重要,於是他們決定發揚謙讓精神。雖然每個人都有自己的主見,但是為了照顧一下自己朋友的想法,他們也可以投和自己本來意願相反的票。我們定義一次投票的衝突數為好朋...

網路流之最小割

最小割的相關知識請參見 網路流問題 i.hdu4289 control 題意 給出乙個由n個點,m條邊組成的無向圖。給出兩個點s,t。對於圖中的每個點,去掉這個點都需要一定的花費。求至少多少花費才能使得s和t之間不連通。分析 題意即求最小割,將每個點拆點,點與對應點的邊權為去掉該點的花費,原圖中所有...

網路流最小割 王者之劍

傳送門 不用考慮走的方法,因為一旦合法,即不同時取相鄰的兩個,一定能達到。所以只用考慮怎麼取就行了。把棋盤黑白染色,s到黑點建權值為val的邊,白點到t建權值為val的邊,然後把相鄰的黑白點建一條為inf的邊。求最小割。不得不提一句 邊從零開始建和從一開始建乙個wa乙個a。時相應的正邊和反邊必須對應...