luogu#P11350. [NOISG2024 Finals] Shops

[NOISG2024 Finals] Shops

题目描述

Yuland 是一个由 nn 个城市组成的小镇,城市之间通过 mm 条双向道路连接,每条道路有不同的长度。从任何城市可以通过道路到达其他城市,可能存在多条道路连接相同的城市对。

每个城市可以建造一个兔子店或鸭子店,但不能同时建造两者。每个城市的居民希望能够收集到这两种动物。一个城市的不便程度定义为距离最近的兔子店和距离最近的鸭子店的距离之间的最大值。

你需要帮助 Yuland 的市长决定在每个城市建造哪种店铺,以最小化所有城市中的最大不便程度。

输入格式

  • 第一行包含两个整数 nnmm,分别表示城市数量和道路数量。
  • 接下来的 mm 行,每行包含三个整数 uiu_iviv_iwiw_i,表示一条连接城市 uiu_iviv_i 的双向道路,其长度为 wiw_i

输出格式

  • 第一行输出一个整数,表示最小可能的不便程度的最大值。
  • 第二行输出一个由 nn 个字符组成的字符串,其中第 ii 个字符表示第 ii 个城市建造的店铺类型:
    • B 表示兔子店。
    • D 表示鸭子店。
  • 如果有多个满足条件的方案,可以输出任意一个。
3 3
1 2 3
2 3 1
1 3 2
2
BBD
5 6
3 2 3
4 2 1
5 3 9
1 3 5
1 4 2
2 3 1
9
DBDDB

提示

【样例解释】

对于样例 #1:

  • 城市 1122 建造兔子店,城市 33 建造鸭子店。
  • 对于城市 11,到最近的鸭子店的距离为 22,到最近的兔子店的距离为 00
  • 对于城市 22,到最近的兔子店和鸭子店的距离均为 11
  • 对于城市 33,到最近的兔子店的距离为 11,到最近的鸭子店的距离为 00
  • 最大不便程度为 22

对于样例 #2:

  • 城市建造的店铺类型为 DBDDB,最大不便程度为 99

【数据范围】

  • 2n,m500,0002 \leq n, m \leq 500,000
  • 1ui,vin1 \leq u_i, v_i \leq n
  • 1wi1091 \leq w_i \leq 10^9
子任务编号 分值 限制条件
00 样例测试用例
11 77 n16n \leq 16
22 1313 m=n1m = n-1ui=i,vi=i+1u_i = i, v_i = i+1
33 1818 m=n1m = n-1
44 2424 wi=1w_i = 1
55 3838 无额外限制