網路流最小割相關(持續更新)

2021-09-02 18:47:11 字數 1056 閱讀 2610

(12.6)

今天看了下網路流,本想寫一篇部落格,但是想了想,畫圖太費勁,證明也不算特別難,那就先咕著了。

前置知識:網路最大流(最好是dinic演算法),最大流最小割定理

一、割邊最少的最小割

題目:hdu3987

hdu6214 (雙倍經驗)

方法一:(一次dinic)

我們首先考慮,如何在求最大流的同時兼顧最小割的邊數。

第一感覺是類似費用流,給每一條邊加一維費用,但仔細思考後發現不用。我們完全可以直接對於每一條邊的容量+1,那麼最後所求出的最大流一定會保證最小割的邊數最少。證明:

設原圖最小割為s,那麼我們對於每一條邊容量+1後,當前圖最小割變為s + p(p為最小割的邊數),顯然可以得到,當p最小時,取得當前圖的最小割,即保證了最小割的最少割邊。

但是,這樣做會改變原圖的最小割。當然,我們可以做兩次dinic,但是這需要你常數夠好不怕卡常。如果我們只做一次dinic,顯然我們需要做到的是:去掉邊數對答案的影響。這裡有乙個操作:

將原圖中每一條邊的容量*(maxp + 1)(maxp為圖中最大邊數)+ 1

那麼當前圖的最小割為s * (maxp + 1) + p(p為最小割的邊數)

顯然p < maxp + 1,那麼我們對當前的最小割除以(maxp + 1)就是原圖的最小割取模(maxp + 1)就是原圖最小割的最少割邊

**不想寫了。

方法二:(兩次dinic)

我們在第一次dinic求出來最大流時,由於最小割中的邊都是滿流邊,那麼問題轉化為,最少刪掉幾條滿流邊可以使圖不連通。

仔細想想,當前那個問題不也是求乙個最小割嗎?那麼我們不妨重新構圖(其實只是修改了容量),對於滿流邊將它的容量改為1,其它邊的容量改為無窮大。這樣,求出來的最小割即為最少割邊啦。

**也不寫啦,都是板子。

二、最小割樹

咕咕咕!

網路流最大流最小割相關

吃飽了撐的去開了一下網路流從入門到入土的題單 簡單在這裡整理一下學到的建模小知識 首先先放乙個板子在這裡 include define int long long define inf 1e18 define n 1000005 define m 2000005 using namespace st...

網路流 最小割

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

網路流 最小割

割是一種對網路流點的劃分方式 對於乙個網路流圖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...