第一问求最小割。 第二问求割边最小的最小割。
我们直接求出第二问就可以求出第一问了。
对于求割边最小,如果我们可以把每条边都附加一个1的权值,那么求最小割是不是会优先选择1最少的边呢。
但是如果直接把边的权值+1,这样求得的最小割就不是原来的最小割了,那是因为1会对原来的容量产生影响。
如果把每条边的权值都乘以一个很大的常数,再加上附加权值1,这样求出的最小割是不是显然也是原图的最小割呢。
那么最终的答案除以这个常数就是最小割的容量,最终的答案模这个常数就是最小割的最小割边数。
# include # include # include # include # include # include # include # include # include <set># include # include using namespace std;# define lowbit(x) ((x)&(-x))# define pi acos(-1.0)# define eps 1e-7# define MOD 1024523# define INF 1e16# define mem(a,b) memset(a,b,sizeof(a))# define FOR(i,a,n) for(int i=a; i<=n; ++i)# define FO(i,a,n) for(int i=a; ii)# define bug puts(