#HK4984. 「POI 2024/2025 R3」Szpiedzy

「POI 2024/2025 R3」Szpiedzy

题目描述

题目译自 XXXII Olimpiada Informatyczna – III etap Szpiedzy

在 Bajtocja 这个神秘国度,一支间谍组织正在执行 mm 种秘密任务。Bajtocja 由 nn 个城市组成,通过 n1n-1 条道路连接,每条道路确保任意两城之间有唯一路径。第 ii 条道路连接城市 aia_ibib_i,由一名间谍驻守,当前执行任务 xix_i,但可能有多名间谍执行同一任务。

你的职责是管理这些间谍的任务分配。面对突发的地缘政治变化,你决定将第 ii 条道路的间谍任务改为 yiy_i。为了确保任务安全,你通过特殊通讯方式向间谍传达指令。每个通讯是一组从 11mm 的排列,即包含原序列所有数字但顺序可能不同的序列。

发送通讯时,你会选择 Bajtocja 的部分城市,由友好居民在清晨挂出排列 pp。当天,每名间谍会检查其负责道路两端的城市,若两城均挂出该排列,间谍将当前任务 cic_i 更换为 p(ci)p(c_i)。当晚,居民会移除所有通讯内容。由于事态紧急,你希望尽量减少通讯次数。你的任务是设计一个通讯序列,高效实现任务变更目标。

输入格式

第一行包含两个整数 n,mn, m (1n50000,1m32)(1 \leq n \leq 50000, 1 \leq m \leq 32),分别表示城市数量和任务种类数。

接下来的 n1n-1 行,每行包含四个整数 ai,bi,xi,yia_i, b_i, x_i, y_i (1ai,bin,1xi,yim)(1 \leq a_i, b_i \leq n, 1 \leq x_i, y_i \leq m),描述连接城市 aia_ibib_i 的道路,驻守间谍当前执行任务 xix_i,目标任务为 yiy_i

输出格式

第一行输出一个非负整数 kk,表示通讯次数。

接下来的 kk 行,每行描述一个通讯,包含排列 pp 和城市列表:即 p(1),p(2),,p(m),l,v1,v2,,vlp(1), p(2), \ldots, p(m), l, v_1, v_2, \ldots, v_l,以空格分隔,其中 ll 为城市数量,v1,,vlv_1, \ldots, v_l 为互不相同的城市编号。若存在多组解,输出任意一种。

6 4
3 1 1 3
1 2 3 2
4 1 2 4
3 5 3 1
6 3 2 2

3
1 3 2 4 6 1 2 3 4 5 6
3 1 2 4 4 1 6 5 3
1 2 4 3 2 1 4

  • 第一次通讯:排列 (1,3,2,4)(1, 3, 2, 4) 在所有城市 (1,2,3,4,5,6)(1, 2, 3, 4, 5, 6) 挂出,将全国的任务 22 改为 33,任务 33 改为 22
  • 第二次通讯:排列 (3,1,2,4)(3, 1, 2, 4) 在城市 (1,6,5,3)(1, 6, 5, 3) 挂出,将道路 131-3 的间谍任务从 11 改为 33,道路 353-522 改为 11,道路 363-633 改为 22
  • 第三次通讯:排列 (1,2,4,3)(1, 2, 4, 3) 在城市 (1,4)(1, 4) 挂出,将道路 141-4 的间谍任务从 33 改为 44

附加样例

  1. n=8,m=8n=8, m=8,$a_i = i+1, b_i = \left\lfloor \frac{i+1}{2} \right\rfloor, x_i = i, y_i = 1$。
  2. n=100,m=20n=100, m=20ai=i,bi=n,xi=(imodm)+1,yi=ma_i = i, b_i = n, x_i = (i \bmod m) + 1, y_i = m
  3. n=1000,m=32n=1000, m=32,$a_i = i+1, b_i = \left\lfloor \frac{i+1}{2} \right\rfloor, x_i = (i \bmod m) + 1, y_i = ((i+1) \bmod m) + 1$。
  4. n=50000,m=30n=50000, m=30ai=i,bi=i+1,xi=(imodm)+1,yi=1a_i = i, b_i = i+1, x_i = (i \bmod m) + 1, y_i = 1

数据范围与提示

为获得满分,你的代码需发送不超过 1010 次通讯。更多通讯次数可获得部分分,如下表所示:

通讯次数 kk 得分
0k100 \leq k \leq 10 100%100\%
11k1511 \leq k \leq 15 85%85\%
16k2016 \leq k \leq 20 65%65\%
21k3021 \leq k \leq 30 50%50\%
31k6531 \leq k \leq 65 25%25\%
66k10066 \leq k \leq 100 20%20\%
101k101 \leq k 0%0\%

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

子任务编号 附加限制 分值
11 n10n \leq 10 44
22 ai=i,bi=na_i = i, b_i = n 对于每个 ii 3232
33 m=2sm = 2^ss0s \geq 0 为整数 1212
44 ai=i,bi=i+1a_i = i, b_i = i+1 对于每个 ii 1212
55 无附加限制 4040