#YACS202205C5. 最大割

最大割

题目描述

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

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

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

输入格式

第一行:两个整数表示 nnmm; 第二行到第 m+1m+1 行:每行两个整数 uuvv 表示一条边的两个端点,保证 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}不连通)