#P15170. [SWERC 2022] Train Splitting
[SWERC 2022] Train Splitting
说明
意大利有 个大城市,城市之间有 条火车线路。每条线路连接两个不同的城市,且是双向的。此外,利用这些火车线路,从任意一个城市出发都可以到达其他所有城市。
目前,所有线路都由国有的意大利客运公司运营,但政府希望将这些线路私有化。政府既不希望某家公司拥有过多权力,也不希望人们需要购买太多不同公司的订阅,同时还希望给所有公司公平的机会。为此,提出了如下模型:
将有 家私营公司,编号为 。每条火车线路将由 家公司中的一家独立运营。要求:
- 对于任意一家公司,存在两个城市,使得仅使用该公司运营的线路无法从一个城市到达另一个城市。
- 另一方面,对于任意两家公司,使用这两家公司运营的线路,任意两个城市之间都可以互相到达。
请给出一种满足上述所有条件的分配方案。可以证明,总是存在可行方案。注意,你可以自行选择 的值,并且不需要最小化或最大化 。
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 (),表示测试数据组数。接下来是 组测试数据。
每组测试数据的第一行包含两个整数 和 (,),分别表示城市数和火车线路数。
接下来的 行,每行包含两个整数 和 (,),表示第 条火车线路连接城市 和 。
保证每条线路连接的是不同的城市对,且所有线路连通整个城市集合,即任意两个城市之间都可以通过火车线路互达。
所有测试数据中 的总和不超过 。
输出格式
对于每组测试数据,第一行输出一个整数 (),表示你方案中的公司数;第二行输出 个整数 (),表示在你的方案中,第 条线路由公司 运营。
如果有多种可行方案,你可以输出任意一种。
2
5 9
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
3 3
1 2
3 1
2 3
4
1 2 3 1 4 2 2 4 3
3
2 3 1
提示
在第一个测试点中,输出结果如下图所示,不同颜色代表不同公司(蓝色为 ,红色为 ,绿色为 ,黄色为 ):
:::align{center}
:::
例如,仅考虑公司 和 时,可以发现任意两个城市之间都可以互达(下图左)。但如果只考虑公司 ,则无法从城市 到达城市 (下图右)。
:::align{center}
:::
第二个测试点的输出结果如下图所示:
:::align{center}
:::
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号