網路流輕鬆入門

2021-10-05 21:26:26 字數 2303 閱讀 6122

以下為自己理解,各位巨佬權當**看好啦,若有誤請指出,蟹蟹~

水流出於源,聚於匯。想象許多條錯綜交錯的小溪從源頭流出,匯聚到另一頭的大海中,網路流描述的問題就是,小溪流入的寬度各不相同,換句話說就是分段限流,假設源頭流入的水量是無限的,問水源一次無限的水灌入後能有多少匯聚到大海?

靈魂畫手登場

如果要手算,肯定從最開始找,每條可能的小溪都嘗試一下,最後得出最大的結果。

計算機也是如此,每條可能的小溪被官方的稱作「增廣路」,網路流最簡單的應該就是ek演算法,這種演算法,就是每次深搜找增廣路,加上答案,就是醬紫,然後所謂dinic演算法,是用bfs找增廣路,加上弧優化、炸點優化等等,就能跑的飛快,據說能跑1e6?

深入的部分就是找到增廣路以後,對增廣路怎麼處理,這裡也是最難懂的地方,其實通俗的講就是找到每條增廣路以後,有效的結果就是這條路裡最窄的地方了,就是讓這條路所有邊都減掉最窄的地方,留下的就是殘流,可以給別的增廣路用到啦~但是吧,增廣路的選取肯定先後的結果是不一樣的,所以要給計算機乙個反悔的機會呀,因為如果不給的話先被選到的地方不一定是最優的啦,所以就要建一條權值為0的反向邊咯。

這裡貼一發dinic板子。

#include

#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define lson rt<<1, l, mid

#define rson rt<<1|1, mid+1, r

#define pi acos(-1)

#define eps 1e-5

#define rint register int

using

namespace std;

typedef

long

long ll;

typedef pair

int> pli;

typedef pair<

int,

int> pii;

typedef pair<

double

,int

> pdi;

typedef pair pll;

typedef pair<

double

,double

> pdd;

typedef map<

char

,int

> mci;

typedef map

int> msi;

template

<

class

t>

void

read

(t &res)

while

(c >=

'0'&& c <=

'9')

res *

= f;

}const

int inf =

2e9;

const

int n =

1e4+4;

const

int m =

2e5+5;

const ll mod =

1e9+7;

struct xx edge[m]

;//記得tot要置為1噢~方便後面計算啦,就不用初始化head陣列啦

int tot =

1, head[n]

;void

add(

int u,

int v,

int w)

; head[u]

= tot;

}int n, m, s, t;

int dep[n]

;int

bfs()}

}return dep[t]

;//如果匯點沒有被更新到就是0啦~

}//這裡就是深入的部分啦,是對每條增廣路的處理

intdfs

(int u,

int in)}if

(!out) dep[u]=0

;//強有力的炸點優化

return out;

}int

dinic()

return res;

}int

main()

printf

("%d\n"

,dinic()

);return0;

}

最後啦,推薦一下我學網路牛的地方啦~

網路流詳解

【演算法講堂】【電子科技大學】【acm】網路流入門

XSLT輕鬆入門

xslt輕鬆入門 zt xuly 發表於 2005 8 15 19 11 00 1.xslt的概念 1.1 什麼是xslt 1.2 為什麼要用xslt 1.3 xslt的歷史 1.4 什麼是xpath 1.5 xslt和css的比較 1.6 xslt和ie5 1.xslt的概念 我們首先來澄清乙個概...

python輕鬆入門

加減乘除與數 算相同,為取餘符號,為取整符號 例題 求1234的各個位置的數字之和 方法一 num 1234 ge num 10 shi num 100 10 bai num 100 10 qian num 1000 sum ge shi bai qian print num 方法二 num 123...

輕鬆入門GitHub使用

今天,我們的主題是 如何快速成為乙個github中近10k star的開源專案的參與者。首先,介紹一下本文的主角 乙個名為dress的開源專案。目前已經有123名貢獻者在這個名為dress的專案裡集結,上傳了上百張 照,收穫了7747餘顆星。一位貢獻者還專門在issues裡發帖 今天,我們都是參與過...