题意还行,就是问最小割是不是唯一的。
假设源点为s,汇点为t,最小割将点集分为两个点集S,T
那么S的一种情况就是,从源点出发,dfs残留网络,沿着不满流的边走,能走到的所有点都属于S,全集减去S即为T。
T的一种情况是,如果一个点沿着一些不满流的边能到达汇点,那么该点属于T。
而本题要求的是唯一性,观察网络有这样一个特性,一个点如果既不能由S沿着不满流的边到达,也不能沿着一些不满流的边到达T,那么该点既可以属于S,也可属于T,那么最小割不是唯一的。
为什么呢? 如果一个点v不能由S沿着不满流的边到达,必然是S到v的所有边都满流,同样如果v沿着不满流的边到不了T,v到T的所有边也都是满流,并且,S到v的流量等于v到T的流量,否则两边流量不对等会导致不满流的边出现,此时既然流量相等,那么v属于S或者T都是可以的,也就是说最小割不唯一
这里搜索要搜两次,一次是从源点出发,另一次是从汇点出发搜索逆图
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include