P3410 最大流最小割

2022-06-02 04:06:09 字數 1064 閱讀 5854

題目大意:

題解 源點s到各任務的邊權為利益

各任務需要的職工到匯點t的邊權為花費

當某一任務的 利益》=花費 時,求得的最大流為完成該任務需要的花費(1)

當某一任務的 利益《花費 時,求得的最大流為完成該任務所得的利益(2)

用總的利益減去最大流得到的

對(1)來說得到的是該任務的純利

對(2)來說得到的是0 即不做該任務

#include #define inf 0x3f3f3f3f

#define ll long long

using

namespace

std;

const

int n=205

;int

n,m,w[n],p[n];

vector

vec[n];

struct

maxflow ;

vector

g[n];

intlev[n], iter[n];

ints,t;

void adde(int u,int v,int

cap) );

g[v].push_back((node));

}void bfs(int

s) }

}int dfs(int u,int t,int

f) }

}return0;

}intmaxflow() }}

}f;int

main()

for(int i=1;i<=m;i++) scanf("

%d",&w[i]);

int node=n+m;

f.s=1+node, f.t=2+node;

for(int i=1;i<=n;i++)

for(int i=n+1;i<=n+m;i++) f.adde(i,f.t,w[i-n]);

printf(

"%d\n

",sum-f.maxflow());

}return0;

}

view code

最大流 最小割

真是不知道該說些什麼呀 感覺這是我見到過的網上敘述最最最詳細的乙個演算法了。可見我才學過幾個演算法qwq 我並不認為我能比網上講的要好 所以 emmm 我就打算解釋一下 不要管這迷一樣的邏輯 先去看看題解hhh 咳咳 等會兒 好了好了 qwq 言歸正傳 這裡的dinic演算法,是對edmonds k...

最小割最大流記錄

經過一系列的學習,明白了一些東西記錄一下備忘 割 是指刪除一些邊,使剩下的網路中沒有增光路,那麼可以得出max flow c s,t 割 為什麼呢?首先我們明白知道最大流一定是根據增光路得到i的,那麼割就是包含增光路的乙個集合,那麼sum c s,t 一定是在在這個 基礎上得到的,也就是割中一定包含...

最大流 最小割定理

割 cut 是網路中頂點的劃分,它把網路中的所有頂點劃分成兩個頂點的集合源點s和匯點t。記為cut s,t 如下圖 源點 s 1 匯點 t 5。框外是容量,框內是流量 如下圖是乙個圖的割。頂點集合s 和t 構成乙個割。如果一條弧的兩個頂點分別屬於頂點集s和t那麼這條弧稱為割cut s,t 的一條割邊...