模板传送门:洛谷【模板】最小割树
相关的题目都很板。。。
题意
给定一个 n n n个点 m m m条边的无向连通图,多次询问两点之间的最小割。
题解
某定理:
n n n个点的图上,两点之间只有 n − 1 n-1 n−1种本质不同的最小割。
所以存在一颗树,满足树上两点最小割等于原图上两点的最小割。
(不会证
最小割树的具体构造方法:
每次在点集中任选两个点分别作为源点和汇点跑最小割,在树中将这两个点连边,边权为最小割的值。将最小割划分出的两个互不相同的集合分别递归下去求解。
注意每次跑最小割都是在原图的基础上跑,所以要把每条边流量复原。
构造出树后,倍增回答即可。
还有另一种构造方法,这里有详细讲解。
原理比较显然,不再证明。
代码
#include<bits/stdc++.h>
u