CF2042E.Vertex Pairs

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个由 2n2n 个顶点组成的树。回想一下,树是一个没有环的连通无向图。每个顶点上都写了一个从 11 到 nn 的整数。从 11 到 nn 的每个值都恰好写在两个不同的顶点上。每个顶点也有成本,顶点 ii 成本 $ 2^i $。

你需要选择树的一个顶点子集,如下所示:

  • 子集是连通的;也就是说,从子集中的每个顶点,只通过子集中的顶点可达子集中的每个其他顶点;
  • 从 $ 1 $ 到 $ n $ 的每个值都至少写在子集中的一个顶点上。

在所有这样的子集中,您需要找到其中顶点的总代价最小的子集。注意,您不需要最小化子集中的顶点数量。

输入格式

第一行包含一个整数 $ n $ ($ 1 \le n \le 2 \cdot 10^5 $)。

第二行包含 $ 2n $ 个整数 $ a_1, a_2, \dots, a_{2n} $ ($ 1 \le a_i \le n $)。从 $ 1 $ 到 $ n $ 的每个值恰好出现两次。

接下来的 $ 2n-1 $ 行中每行包含两个整数 $ v $ 和 $ u $ ($ 1 \le v, u \le 2n $)——树的边。这些边构成了一棵有效的树。

输出格式

在第一行中,打印一个整数 $ k $ ——子集中的顶点数。

在第二行中,打印从 $ 1 $ 到 $ 2n $ 的 $ k $ 个不同整数——所选子集中顶点的索引。顶点可以以任意顺序打印。

输入输出样例

  • 输入#1

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

    输出#1

    3
    2 4 5
  • 输入#2

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

    输出#2

    4
    1 3 4 6
  • 输入#3

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

    输出#3

    6
    2 3 4 5 8 10

说明/提示

null

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

首页