【题解】P10698 [SNCPC2024] 最大流
https://www.luogu.com.cn/problem/P10698
\(k\) 很小,考虑 LGV+rank。
首先解决边不交的限制。我们 LGV 是点不交,所以考虑拆点。对于每个 \(u\to v\) 的边,新建一个 \(v_k\),然后 \(v_k\) 连向所有 \(v\) 的出边。这样一个点就可以有多个流经过他。
然后是 \(k\) 的限制,其实也是类似的,连边 \(1\to p_{1\sim k}\),然后 \(p_{1\sim k}\) 连向 \(1\) 的出边。
然后给边随机赋权,得到矩阵的秩就是最大流大小。
这样边数是 \(\sum \deg^{in}\times \deg^{out}\),但是我们更新的时候若一个点的最大流超过 \(k\) 就只有 \(k\) 个拆出来的点有用,所以跑一遍线性基,找到线性无关的 \(k\) 组向量。
时间复杂度 \(O(mk^2)\)。
浙公网安备 33010602011771号