CF1155F Delivery Oligopoly

题目描述

整个 Berland 的快递市场由两家竞争公司 BerEx 和 BerPS 控制。它们都在 Berland 的所有城市间提供快速且可靠的快递服务。 Berland 的地图可以表示为一张无向图,城市为顶点,道路为连接城市之间的边。任意一对城市之间最多只有一条道路,每条道路连接的是不同的城市。 BerEx 和 BerPS 之间竞争激烈,对于每一对城市 $(v, u)$,它们都设置了各自的路径,使得这两条路径之间没有任何一条道路是重合的。保证这样的设置是可行的。 现在,Berland 政府决定通过废弃部分道路来减少道路维护成本。显然,他们希望维护的道路数量尽可能少。但同时,他们又不希望破坏整个快递系统。因此,BerEx 和 BerPS 之间每一对城市之间仍然需要能够有两条不重合的路径。 请问 Berland 政府最少需要维护多少条道路? 更正式地说,给定一张 $2$-边连通的无向图,最少可以保留多少条边,使得保留后的图依然是 $2$-边连通的?

输入格式

第一行包含两个整数 $n$ 和 $m$($3 \le n \le 14$,$n \le m \le \frac{n(n - 1)}{2}$),分别表示城市数量和道路数量。 接下来的 $m$ 行,每行包含两个整数 $v$ 和 $u$($1 \le v, u \le n$,$v \ne u$),表示一条连接城市 $v$ 和 $u$ 的道路。 保证任意一对城市之间最多只有一条道路。保证任意一对城市之间都至少存在两条不重合的路径。

输出格式

第一行输出一个整数 $k$,表示 Berland 政府最少需要维护的道路数量。 接下来的 $k$ 行,每行输出两个整数 $v$ 和 $u$,表示被维护的道路连接的两个城市。 如果有多组最优解,输出任意一组即可。道路输出顺序不限。

说明/提示

以下是样例中的图示,红色边为被维护的道路。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1155F/f8cc8be0ffeaa507611464c133b700c1bfff4218.png) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1155F/ddf572c9ce5da3caff7f3f945bec8caed610de38.png) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1155F/396a726bd443525a7d7d772e211f1816f0f1d82f.png) 由 ChatGPT 4.1 翻译