QOJ.ac

QOJ

Límite de tiempo: 6 s Límite de memoria: 256 MB Puntuación total: 100

#10616. 间谍

Estadísticas

在拜特国(Bajtocja)有一个间谍组织,每位间谍负责执行 $m$ 个任务中的恰好一个。拜特国有 $n$ 个城市,由 $n-1$ 条道路连接,任意两个城市之间有且仅有一条路径。第 $i$ 条道路连接城市 $a_i$ 和 $b_i$,且有一名间谍在此工作,目前正在执行任务 $x_i$。

一个任务可以由多名间谍同时执行。

你的工作是管理每位间谍执行的任务。由于地缘政治局势的突然变化,你决定让在第 $i$ 条道路工作的间谍现在执行任务 $y_i$。

由于任务安全至关重要,你将通过特殊通信向间谍传达这些信息。单次通信是一个 $1$ 到 $m$ 的数字排列,其中排列是指包含与原序列相同数字但顺序可能不同的序列。

为了传达给定的通信,你将选择拜特国的一个城市子集,友好的居民会在清晨在这些城市挂出给定的排列 $p$。当天,每位间谍都会访问其工作道路连接的两个城市,并且仅当两个城市都挂出了该排列时,才会更改其任务。随后,傍晚时分,同一批友好的居民会撤下挂出的通信。

如果第 $i$ 位间谍当前执行的任务是 $c_i$,那么在更改后,他将执行任务 $p(c_i)$。情况紧急,因此你希望发送的通信数量尽可能少。你的任务是设计一个通信序列,以实现你的目标。

输入格式

输入的第一行包含两个整数 $n$ 和 $m$ ($1 \le n \le 50\,000, 1 \le m \le 32$),分别表示拜特国的城市数量和任务数量。接下来的 $n-1$ 行,每行包含四个整数 $a_i, b_i, x_i, y_i$ ($1 \le a_i, b_i \le n, 1 \le x_i, y_i \le m$),描述了连接 $a_i$ 和 $b_i$ 的道路,以及在该道路工作的间谍当前执行的任务 $x_i$ 和应执行的任务 $y_i$。

输出格式

在输出的第一行,输出一个非负整数 $k$,表示通信的数量。接下来输出这 $k$ 个通信的描述。对于包含排列 $p$ 并在 $l$ 个城市 $v_1, \dots, v_l$ 中宣布的通信,其描述为整数序列 $p(1), p(2), \dots, p(m), l, v_1, v_2, \dots, v_l$,各数字之间用空格分隔。数字 $v_1, \dots, v_l$ 必须互不相同。如果存在多个合法的通信序列,输出其中任意一个即可。

样例

输入 1

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

输出 1

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

样例解释:我们将第一个排列 $(1, 3, 2, 4)$ 挂在所有城市,因此在整个拜特国,我们将所有任务 $2$ 变为 $3$,将 $3$ 变为 $2$。我们将第二个排列 $(3, 1, 2, 4)$ 挂在城市 $1, 6, 5$ 和 $3$。它将道路 $1-3$ 上的间谍任务从 $1$ 变为 $3$,道路 $3-5$ 上的间谍任务从 $2$ 变为 $1$,道路 $3-6$ 上的间谍任务从 $3$ 变为 $2$。最后,我们用第三个排列将道路 $1-4$ 上的间谍任务从 $3$ 变为 $4$。

子任务

测试集分为以下子任务。每个子任务的测试用例由一组或多组独立的测试组成。

子任务 数据范围 分值
1 $n \le 10$ 4
2 对每个 $i$,$a_i = i, b_i = n$ 32
3 $m = 2^s$($s \ge 0$ 为整数) 12
4 对每个 $i$,$a_i = i, b_i = i+1$ 12
5 无额外限制 40

为了获得给定子任务的满分,你的解决方案发送的通信数量不得超过 $10$ 次。通过发送更多通信获得部分分也是可能的,如下表所示:

通信数量 得分
$0 \le k \le 10$ 100%
$11 \le k \le 15$ 85%
$16 \le k \le 20$ 65%
$21 \le k \le 30$ 50%
$31 \le k \le 65$ 25%
$66 \le k \le 100$ 20%
$101 \le k$ 0%

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.