CF911F.Tree Destruction
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an unweighted tree with n vertices. Then n - 1 following operations are applied to the tree. A single operation consists of the following steps:
- choose two leaves;
- add the length of the simple path between them to the answer;
- remove one of the chosen leaves from the tree.
Initial answer (before applying operations) is 0. Obviously after n - 1 such operations the tree will consist of a single vertex.
Calculate the maximal possible answer you can achieve, and construct a sequence of operations that allows you to achieve this answer!
给你一棵包含 n 个顶点的无权树。随后对该树执行 n−1 次操作。每次操作包含以下步骤:
- 选择两个叶子节点;
- 将它们之间简单路径的长度加到答案中;
- 从树中删除所选的两个叶子节点中的一个。
初始答案(执行操作前)为 0。显然,经过 n−1 次这样的操作后,树将仅剩一个顶点。
请计算你能得到的最大可能答案,并构造一个能达成该最大答案的操作序列!
输入格式
The first line contains one integer number n (2 ≤ n ≤ 2·105) — the number of vertices in the tree.
Next n - 1 lines describe the edges of the tree in form a__i, b__i (1 ≤ a__i, b__i ≤ n, a__i ≠ b__i). It is guaranteed that given graph is a tree.
第一行包含一个整数 n(2≤n≤2⋅105)—— 树中顶点的数量。
接下来的 n−1 行描述树的边,每行格式为 ai, bi(1≤ai,bi≤n,且 ai=bi)。保证所给图是一棵树。
输出格式
In the first line print one integer number — maximal possible answer.
In the next n - 1 lines print the operations in order of their applying in format a__i, b__i, c__i, where a__i, b__i — pair of the leaves that are chosen in the current operation (1 ≤ a__i, b__i ≤ n), c__i (1 ≤ c__i ≤ n, c__i = a__i or c__i = b__i) — choosen leaf that is removed from the tree in the current operation.
See the examples for better understanding.
第一行输出一个整数——最大可能的答案。
接下来的 n−1 行按操作执行顺序输出各操作,每行格式为 ai,bi,ci,其中 ai,bi 是当前操作中所选的一对叶子节点(1≤ai,bi≤n),ci(1≤ci≤n,且 ci=ai 或 ci=bi)是当前操作中从树中删除的叶子节点。
参见示例以加深理解。
输入输出样例
输入#1
3 1 2 1 3
输出#1
3 2 3 3 2 1 1
输入#2
5 1 2 1 3 2 4 2 5
输出#2
9 3 5 5 4 3 3 4 1 1 4 2 2
输入解题思路,AI测评打分。不知道怎么写?