Commit 6b1e45bf authored by 24OI-bot's avatar 24OI-bot
Browse files

style: format markdown files with remark-lint

parent 73deaf06
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -7,9 +7,9 @@
源点、汇点:网络中的两个特殊节点。流量从源点产生,最后全部归于汇点。源点用 $S$ 表示,汇点用 $T$ 表示。

流量:对于网络中的每条边 $(x,y)$ , $f(x,y)$ 被称为该边的流量。流量需要满足以下三条性质:
1\. 容量限制:对于每条边,流经该边的流量不得超过该边的容量,即$f(x,y) \leq c(x,y)$。
2\. 斜对称性:每条边的流量与其相反边的流量之和为 0,即$f(x,y)=f(y,x)$。
3\. 流量守恒:从源点流出的流量等于汇点流入的流量。
1.容量限制:对于每条边,流经该边的流量不得超过该边的容量,即 $f(x,y) \leq c(x,y)$ 
2.斜对称性:每条边的流量与其相反边的流量之和为 0,即 $f(x,y)=f(y,x)$ 
3.流量守恒:从源点流出的流量等于汇点流入的流量。

## 网络流的常见问题

+11 −11
Original line number Diff line number Diff line
@@ -8,11 +8,11 @@

求解最大流之前,我们先认识以下增广路的概念。

**增广路**指的是,从源点到汇点,只要有 $flow$ ($flow>0$) 流过去,这条路就是增广路。在一些最大流算法中,就是将这些路**增广**(意思就是走掉这条路,带走的流量肯定就是这条路的最小流量),如图:
**增广路**指的是,从源点到汇点,只要有 $flow$ ( $flow>0$ ) 流过去,这条路就是增广路。在一些最大流算法中,就是将这些路**增广**(意思就是走掉这条路,带走的流量肯定就是这条路的最小流量),如图

![](./images/flow1.png)

我们从 $4$ 到 $3$,肯定可以先从流量为 $20$ 的这条边先走。那么这条边就被走掉了,不能再选,总的流量为 $20$(现在)。然后我们可以这样选择:
我们从 $4$ 到 $3$ ,肯定可以先从流量为 $20$ 的这条边先走。那么这条边就被走掉了,不能再选,总的流量为 $20$ (现在)。然后我们可以这样选择

1.   $4\rightarrow2\rightarrow3$ 这条**增广路**的总流量为 $20$ 。到 $2$ 的时候还是 $30$ ,到 $3$ 了就只有 $20$ 了。

@@ -34,7 +34,7 @@

![](./images/flow2.png)

讲一下一些小细节。如果你是用邻接矩阵的话,反向边直接就是从 $table[x,y]$ 变成 $table[y,x]$。如果是常用的链式前向星,那么在加入边的时候就要先加入反向边。那么在用的时候呢,我们直接 $i\operatorname{xor}1$ 就可以了 ($i$ 为边的编号)。为什么呢? 相信大家都是知道 $\operatorname{xor}$ 的,那么我们在加入正向边后加入反向边,就是靠近的,所以可以使用 $\operatorname{xor}$。我们还要注意一开始的编号要设置为 $tot=1$,因为边要从编号 $2$ 开始,这样子 $\operatorname{xor}$ 对编号 $2,3$ 的边才有效果。
讲一下一些小细节。如果你是用邻接矩阵的话,反向边直接就是从 $table[x,y]$ 变成 $table[y,x]$ 。如果是常用的链式前向星,那么在加入边的时候就要先加入反向边。那么在用的时候呢,我们直接 $i\operatorname{xor}1$ 就可以了 ( $i$ 为边的编号。为什么呢相信大家都是知道 $\operatorname{xor}$ 的,那么我们在加入正向边后加入反向边,就是靠近的,所以可以使用 $\operatorname{xor}$ 。我们还要注意一开始的编号要设置为 $tot=1$ ,因为边要从编号 $2$ 开始,这样子 $\operatorname{xor}$ 对编号 $2,3$ 的边才有效果。

EK 算法的时间复杂度为 $O(n^2m)$ (其中 $n$ 为点数, $m$ 为边数)。效率还有很大提升空间。