CF1481F.AB Tree

普及/提高-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Kilani and Abd are neighbors for 3000 years, but then the day came and Kilani decided to move to another house. As a farewell gift, Kilani is going to challenge Abd with a problem written by their other neighbor with the same name Abd.

The problem is:

You are given a connected tree rooted at node 11.

You should assign a character a or b to every node in the tree so that the total number of a's is equal to xx and the total number of b's is equal to nxn - x.

Let's define a string for each node vv of the tree as follows:

  • if vv is root then the string is just one character assigned to vv:
  • otherwise, let's take a string defined for the vv's parent pvp_v and add to the end of it a character assigned to vv.

You should assign every node a character in a way that minimizes the number of distinct strings among the strings of all nodes.

基拉尼和阿卜杜是长达3000年的邻居,但这一天终于到来,基拉尼决定搬去另一所房子。作为临别礼物,基拉尼将用他们另一位同名邻居阿卜杜所出的一道题来挑战阿卜杜。

题目如下:

给定一棵以节点 11 为根的连通树。

你需要为树中每个节点分配字符 ab,使得 a 的总个数恰好为 xxb 的总个数恰好为 nxn - x

对树中每个节点 vv,我们定义一个字符串如下:

  • vv 是根节点,则该字符串即为分配给 vv 的单个字符;
  • 否则,取 vv 的父节点 pvp_v 所对应的字符串,并在其末尾添加分配给 vv 的字符。

你需要为每个节点分配字符,使得所有节点对应字符串中互不相同的字符串总数最小。

输入格式

The first line contains two integers nn and xx (1n1051 \leq n \leq 10^5; 0xn0 \leq x \leq n) — the number of vertices in the tree the number of a's.

The second line contains n1n - 1 integers p2,p3,,pnp_2, p_3, \dots, p_{n} (1pin1 \leq p_i \leq n; piip_i \neq i), where pip_i is the parent of node ii.

It is guaranteed that the input describes a connected tree.

第一行包含两个整数 nnxx1n1051 \leq n \leq 10^50xn0 \leq x \leq n)—— 分别表示树中顶点的数量和字母 a 的数量。

第二行包含 n1n - 1 个整数 p2,p3,,pnp_2, p_3, \dots, p_{n}1pin1 \leq p_i \leq npiip_i \neq i),其中 pip_i 表示节点 ii 的父节点。

保证输入描述的是一棵连通的树。

输出格式

In the first line, print the minimum possible total number of distinct strings.

In the second line, print nn characters, where all characters are either a or b and the ii-th character is the character assigned to the ii-th node.

Make sure that the total number of a's is equal to xx and the total number of b's is equal to nxn - x.

If there is more than one answer you can print any of them.

第一行输出可能的最少不同字符串总数。

第二行输出 nn 个字符,每个字符均为 a 或 b,其中第 ii 个字符表示分配给第 ii 个节点的字符。

请确保字符 a 的总数为 xx,字符 b 的总数为 nxn - x

若存在多个可行答案,输出任意一个即可。

输入输出样例

  • 输入#1

    9 3
    1 2 2 4 4 4 3 1

    输出#1

    4
    aabbbbbba

说明/提示

The tree from the sample is shown below:

The tree after assigning characters to every node (according to the output) is the following:

Strings for all nodes are the following:

  • string of node 11 is: a
  • string of node 22 is: aa
  • string of node 33 is: aab
  • string of node 44 is: aab
  • string of node 55 is: aabb
  • string of node 66 is: aabb
  • string of node 77 is: aabb
  • string of node 88 is: aabb
  • string of node 99 is: aa

The set of unique strings is a,aa,aab,aabb{\text{a}, \text{aa}, \text{aab}, \text{aabb}}, so the number of distinct strings is 44.

样例中的树如下所示:

按照输出结果为每个节点分配字符后得到的树如下所示:

各节点对应的字符串如下:

  • 节点 11 的字符串为:a
  • 节点 22 的字符串为:aa
  • 节点 33 的字符串为:aab
  • 节点 44 的字符串为:aab
  • 节点 55 的字符串为:aabb
  • 节点 66 的字符串为:aabb
  • 节点 77 的字符串为:aabb
  • 节点 88 的字符串为:aabb
  • 节点 99 的字符串为:aa

所有不同字符串构成的集合为 a,aa,aab,aabb{\text{a}, \text{aa}, \text{aab}, \text{aabb}},因此不同字符串的个数为 44

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

首页