#L4030. 「COCI 2024.1」Restorani

「COCI 2024.1」Restorani

题目描述

译自 COCI 2023/2024 Contest #3 T4「Restorani」。

来到塞格德,Malnar 先生像通常一样,必须了解当地文化,品尝所有传统餐点、特色美食和当地饮料。

我们可以把塞格德想象成由 n1n-1 条双向道路连接的 nn 个景点,这些景点的编号从 11nn。这样,每一对景点之间都有一条路径。令人惊奇的是,Malnar 先生走过每条道路正好需要一分钟。在景点行走的时间可以忽略不计。

Malnar 先生有一份他想去的 mm 家餐厅的清单。它由 mm 个正整数组成,其中第 ii 个数表示第 ii 家餐厅在哪个景点附近(记为餐厅 ii 位于景点 aia_i)。

一个问题是 Malnar 先生在餐厅用餐后,必须马上去甜品店吃冰淇淋。另一个问题是,他拒绝两次光顾同一家甜品店。

幸运的是他有备而来,因为他知道 mm 家甜品店,这些甜品店的位置是由 mm 个正整数组成的列表,其中第 ii 个数字代表第 ii 家甜品店在这个景点附近(记为甜品店 ii 位于景点 bib_i)。

Malnar 先生旅途劳累,不想走更多的路,因此他请你计算一下他需要走多少路,并提供去餐厅和甜品店的顺序,这样他就可以在没有帮助的情况下穿梭于餐厅和甜品店之间了。

Malnar 先生目前在景点 11,并且必须在最后回到景点 11

输入格式

第一行包含整数 nnmm1mn3×1051 \le m \le n \le 3 \times 10^5),分别表示:

  • nn:景点个数;
  • mm:餐厅和甜品店的个数(餐厅、甜品店各 mm 家)。

第二行包含 mm 个整数 aia_i1ain1 \le a_i \le nij,aiaj\forall i \neq j, a_i \neq a_j),表示餐厅清单:第 ii 家餐厅位于景点 aia_i,所有餐厅位置互不相同。

第三行包含 mm 个整数 bib_i1bin1 \le b_i \le nij,bibj\forall i \neq j, b_i \neq b_j),表示甜品店清单:第 ii 家甜品店位于景点 bib_i,所有甜品店位置互不相同。

接下来 n1n-1 行,每行两个整数 xix_iyiy_i1xi,yin1 \le x_i, y_i \le n),表示景点 xix_iyiy_i 之间有一条双向道路。

输出格式

第一行输出 tt,表示 Malnar 先生的最短用时(单位:分钟)。

第二行输出 2m2m 个整数 v1,v2,,v2mv_1, v_2, \ldots, v_{2m},表示行程顺序,需满足:

  1. 奇数位置(v1,v3,,v2m1v_1, v_3, \ldots, v_{2m-1})是餐厅编号的排列(1m1 \sim m 各出现一次);
  2. 偶数位置(v2,v4,,v2mv_2, v_4, \ldots, v_{2m})是甜品店编号的排列(1m1 \sim m 各出现一次);
  3. 行程路线为:景点 11 → 餐厅 v1v_1 所在景点 → 甜品店 v2v_2 所在景点 → 餐厅 v3v_3 所在景点 → \ldots → 甜品店 v2mv_{2m} 所在景点 → 景点 11,总用时为 tt(最短可能)。

如果有多个最优顺序,输出任意一个均可。

样例 1

输入

3 1
2
3
1 2
1 3

输出

4
1 1

样例解释

  • 行程路线:景点 11 → 餐厅 11(景点 22,用时 11 分钟)→ 甜品店 11(景点 33,用时 22 分钟)→ 景点 11(用时 11 分钟)。
  • 总用时:1+2+1=41 + 2 + 1 = 4 分钟,符合输出。

样例 2

输入

9 4
2 3 4 6
4 5 8 9
1 2
1 3
3 4
3 5
5 6
1 7
7 8
7 9

输出

18
3 1 4 2 2 4 1 3

样例解释

  • 行程顺序对应的景点路线: 景点 11 → 餐厅 33(景点 4422 分钟)→ 甜品店 11(景点 4400 分钟)→ 餐厅 44(景点 6633 分钟)→ 甜品店 22(景点 5511 分钟)→ 餐厅 22(景点 3311 分钟)→ 甜品店 44(景点 9933 分钟)→ 餐厅 11(景点 2233 分钟)→ 甜品店 33(景点 8833 分钟)→ 景点 1122 分钟)。
  • 总用时:2+0+3+1+1+3+3+3+2=182+0+3+1+1+3+3+3+2 = 18 分钟,符合输出。

样例 3

输入

10 5
3 5 6 7 8
1 2 4 9 10
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10

输出

24
4 4 5 5 3 3 2 2 1 1

样例解释

  • 行程顺序对应的景点路线: 景点 11 → 餐厅 44(景点 7766 分钟)→ 甜品店 44(景点 9922 分钟)→ 餐厅 55(景点 8811 分钟)→ 甜品店 55(景点 101022 分钟)→ 餐厅 33(景点 6644 分钟)→ 甜品店 33(景点 4422 分钟)→ 餐厅 22(景点 5511 分钟)→ 甜品店 22(景点 2233 分钟)→ 餐厅 11(景点 3311 分钟)→ 甜品店 11(景点 1122 分钟)→ 景点 1100 分钟)。
  • 总用时:6+2+1+2+4+2+1+3+1+2=246+2+1+2+4+2+1+3+1+2 = 24 分钟,符合输出。

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务编号 附加限制 分值
1 n5000,m10n \le 5000, m \le 10 18
2 i=1,,n1,xi=i,yi=i+1\forall i=1,\ldots,n-1, x_i=i, y_i=i+1(景点构成一条链)
3 n5000n \le 5000 27
4 无附加限制 37

评分说明

  • 如果程序输出的第一行(最短用时 tt)正确,但第二行(行程顺序)不符合要求,可在对应测试点获得 30%30\% 的分数。
  • 子任务得分取该子任务下所有测试点的最低分。