CF1666K.Kingdom Partition
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
国王已去世。在国王统治期间,王国中的所有道路都破败不堪,需要修复。国王的三个孩子,Adrian,Beatrice 和 Cecilia,正在将王国瓜分给他们自己。
Adrian 和 Beatrice 彼此不喜欢对方,并且不打算在未来保持任何联系。Cecilia 分别与他们两个关系良好。此外,王国的大多数工人都支持 Cecilia,因此她拥有更好的资源和更多的机会修复基础设施和发展经济。
Cecilia 提议将王国分为三个区域:A区(给 Adrian)、B区(给 Beatrice)和 C区(给 Cecilia),并让 Adrian 和 Beatrice 协商并选择他们想要放在各自区域内的城镇,并达成对如何将王国分割成三个区域的协议。
Adrian 的城堡位于城镇 A,而 Beatrice 的城堡位于城镇 B。因此,Adrian 希望他的城堡位于 A 区,而 Beatrice 希望她的城堡位于 B 区。Cecilia 没有城堡,所以 C 区可以不包含任何城镇。
Adrian 和 Beatrice 面临一个问题。当他们选择了城镇之后,他们将需要支付道路修复的费用。
修复长度为 l 的道路所需费用为 2⋅l 金币。然而,Adrian 和 Beatrice 并不需要承担所有的修复费用。他们所需承担的长度为 l 的道路修复费用取决于它连接的城镇:
- 对于连接 A 区内的两个城镇之间的道路,Adrian 需要支付 2⋅l 金币的费用。
- 对于连接 B 区内的两个城镇之间的道路,Beatrice 需要支付 2⋅l 金币的费用。
- 对于连接 A 区和 C 区之间的城镇的道路,Adrian 需要支付 l 金币的费用,剩下的费用由Cecilia承担。
- 对于连接 B 区和 C 区之间的城镇的道路,Beatrice 需要支付 l 金币的费用,剩下的费用由Cecilia承担。
连接 A 区和 B 区的城镇之间的道路将不会修复,因为 Adrian 和 Beatrice 没有打算使用它们,所以没有人为它们支付费用。Cecilia 将自己修复连接 C 区内的城镇的道路,因此 Adrian 和 Beatrice 也不需要承担修复费用。
Adrian 和 Beatrice 希望尽量减少在道路修复上的总花费。找到他们将王国分割成三个区域的最便宜的方式。
输入格式
第一行包含两个整数 n 和 m ——城镇的数量和王国中道路的数量 (2≤n≤1000;0≤m≤2000)。
第二行包含两个整数 a 和 b,表示必须位于 A 区和 B 区的城镇 a 和 b (1≤a,b≤n;a=b)。
接下来 m 行描述了王国中的道路。第 i 行包含三个整数 ui,vi,li,表示一条在 ui 和 vi 之间长度为 li 的道路 (1≤ui,vi≤n;ui=vi;1≤li≤109)。
两个城镇之间之多只有一条道路(即无重边)。
输出格式
第一行输出一个整数,表示 Adrian 和 Beatrice 修复道路的最小总费用。
第二行输出一个由 n 个字符 'A'、'B' 和 'C' 组成的字符串,其中第 i 个字符表示第 i 个城镇应属于的区域。
如果存在多种最便宜的王国分割方式,可以输出其中任意一种。
输入输出样例
输入#1
6 7 1 3 1 2 10 2 3 5 1 3 7 4 5 3 3 6 100 4 6 3 5 6 8
输出#1
16 ABBCBA
说明/提示
样例解释
以下图片说明了示例情况。Adrian 和 Beatrice 不支付虚线道路的费用,他们支付 2⋅l 的费用用于修复加粗道路,以及 l 的费用用于修复实线道路。
所以总花费是 2⋅5+3+3=16;
Adrian 和 Beatrice 的城堡位于图中加粗的城镇

输入解题思路,AI测评打分。不知道怎么写?