網路流學習記錄

2021-09-10 22:20:28 字數 2753 閱讀 6368

(文章更新中)

費用流(再不冒個泡我都以為我退役了)

(luogup3376最大流模板)

關於網路流的講解其實網上很多,具體的這裡就不再多說了,就說幾點新學網路流要注意的地方吧:

cnt要賦上初值,要麼為-1,要麼為1,這樣它是從2或者0開始的,保證了每次異或後的兩個邊是對應的

大部分情況下,盡量使用dinic演算法,雖然說ek也是很厲害的,但是網路流的玄學複雜度可能被卡

沒事的話不要瞎剪枝,我這個比較水的,之前瞎剪枝,模板跑得飛快,最後發現有問題是被幾道題卡到飛起(捂臉)

#include

#include

#include

#include

#include

using

namespace std;

#define re register

#define gc getchar()

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return x*f;

}const

int n=

100010

,inf=(1

<<29)

;struct node e[n<<1]

;int h[n]

,n,cnt=

1,s,t,m;

inline

void

add(

int u,

int v,

int w)

,h[u]

=cnt;

e[++cnt]

=(node)

,h[v]

=cnt;

}#define qxx(u) for(int i=h[u],v;v=e[i].to,i;i=e[i].next)

int deep[n]

;inline

intbfs()

}return deep[t];}

intdfs

(int u,

int flow)

if(res==flow) deep[u]=0

;return flow-res;

}int ans,maxf;

intmain()

while

(bfs()

) cout

}

其實這個就是一種比較dinic優秀的一種演算法,也可以進行當前弧優化,這個人後面再講

#include

#include

#include

#include

#include

using

namespace std;

#define re register

#define gc getchar()

inline

intread()

while

(ch>=

'0'&&ch<=

'9') x=

(x<<1)

+(x<<3)

+(ch^48)

,ch=gc;

return x*f;

}const

int n=

4001000

,inf=(1

<<29)

;struct node e[n<<4]

;int h[n]

,n,cnt=

1,s,t,m;

inline

void

add(

int u,

int v,

int w)

,h[u]

=cnt;

e[++cnt]

=(node)

,h[v]

=cnt;

}#define qxx(u) for(int i=h[u],v;v=e[i].to,i;i=e[i].next)

int deep[n]

,gap[n]

;void

bfs()}

return;}

int maxf;

intdfs

(int u,

int flow)

int used=0;

qxx(u)

if(e[i]

.w&&deep[v]+1

==deep[u])if

(used==flow)

return used;

}--gap[deep[u]];

if(gap[deep[u]]==

0)deep[s]

=n+1

; deep[u]++;

gap[deep[u]]++

;return used;

}void

isap()

intmain()

isap()

;return0;

}

做題思想

網路流的重點和難點其實是在建圖,它的模板其實不怎麼難,可就是看不出來這個是網路流或者看出來了卻無法建出準確的圖來。

在網路流的題目中,有乙個重要的結論:最大流=最小割,往往,題目問的都是關於最少捨棄多少之類的問題,這個時候就是最大流=最小割

題目總結:

(更新ing,還在一篇一篇的打,到時候直接轉過來就行了)

(我能說我還在更新嗎)

網路流 (基礎學習)

流網路g v,e 是乙個有向圖,其中每條邊 u,v e 均有一非負容量 c u,v 0,規定 若 u v e,則 c u,v 0。網路中由兩個特殊點 源點s和匯點t 網路中的邊相當於是粗細不同的水管,c u,v 相當於是水管的直徑。流網路g的流是乙個實值函式 f v v r,且滿足下列三個性質 1 ...

網路流學習筆記

先宣告,來自網路,寫得也比較亂,如果有任何問題可以聯絡博主。首先,我們來理解下網路流。在乙個有向圖上選擇乙個源點,乙個匯點,每一條邊上都有乙個流量上限 以下稱為容量 即經過這條邊的流量不能超過這個上界,同時,除源點和匯點外,所有點的入流和出流都相等,而源點只有流出的流,匯點只有匯入的流。這樣的圖叫做...

網路流 學習筆記

略。update 我發現我的最大流一直是寫錯的!寫錯一年了!這一年居然沒有被卡真是奇蹟 void dedge int sta,int edn,lon w fst sta ecnt void edge int sta,int edn,lon w bool bfs return 0 lon dfs in...