#P9007. 最大割

最大割

题目描述

给定一张有n n 个点、mm 条边的无向图,如果有一种划分,能将图上的所有点不重复不遗漏地分割成两个部分(记为SSˉ)( 记为 S 与 \bar{S} ),且这两部分都不是空集,则称(S,Sˉ) (S,\bar{S})是图的一个割(Cut)。

对于一个割来说(S,Sˉ) (S,\bar{S}) ,图上有多少边跨越这个割,这个割的大小就是多少。所谓跨越,就是指某条边的一端在 SS,另一端在 Sˉ\bar{S}

对于给定的图,请找到一个最大的割,并输出这个割的大小。

输入格式

第一行:两个整数表示 nnmm

第二行到第 m+1m+1 行:每行两个整数uv u 与 v 表示一条边的两个端点,保证 uvu\neq v ,注意同一对点之间可能有多条边,这些边应被看做是不同的边。

输出格式

单个整数:表示最大割的大小。

数据范围

对于 50%50\% 的数据,2n162\leq n\leq 16

对于 100%100\% 的数据,2n242\leq n\leq 24

1m100001\leq m\leq 10000

样例

3 5
1 2
2 3
3 1
1 3
2 3
4

样例解释

将图割成{1,2}与{3},1与3之间有两条边,2与3之间也有两条边。

4 2
1 2
3 4
2

样例解释

将图割成{1,3}与{2,4}时割最大。注意与最小割的区别,这个例子中的最小割为0(因为{1,2}与{3,4}不连通)

限制

1s, 512MB 每组测试数据

来源

上海市计算机学会竞赛平台 2022年5月月赛