A11117 | Upgrading Tree
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
You are given a tree with $n$ vertices and you are allowed to perform no more than $2n$ transformations on it. Transformation is defined by three vertices $x,y,y'$ and consists of deleting edge $(x,y)$ and adding edge $(x,y')$ . Transformation $x,y,y'$ could be performed if all the following conditions are satisfied:
1. There is an edge $(x,y)$ in the current tree.
2. After the transformation the graph remains a tree.
3. After the deletion of edge $(x,y)$ the tree would consist of two connected components. Let's denote the set of nodes in the component containing vertex $x$ by $V_{x}$ , and the set of nodes in the component containing vertex $y$ by $V_{y}$ . Then condition $|V_{x}|>|V_{y}|$ should be satisfied, i.e. the size of the component with $x$ should be strictly larger than the size of the component with $y$ .
You should minimize the sum of squared distances between all pairs of vertices in a tree, which you could get after no more than $2n$ transformations and output any sequence of transformations leading initial tree to such state.
Note that you don't need to minimize the number of operations. It is necessary to minimize only the sum of the squared distances.
1. There is an edge $(x,y)$ in the current tree.
2. After the transformation the graph remains a tree.
3. After the deletion of edge $(x,y)$ the tree would consist of two connected components. Let's denote the set of nodes in the component containing vertex $x$ by $V_{x}$ , and the set of nodes in the component containing vertex $y$ by $V_{y}$ . Then condition $|V_{x}|>|V_{y}|$ should be satisfied, i.e. the size of the component with $x$ should be strictly larger than the size of the component with $y$ .
You should minimize the sum of squared distances between all pairs of vertices in a tree, which you could get after no more than $2n$ transformations and output any sequence of transformations leading initial tree to such state.
Note that you don't need to minimize the number of operations. It is necessary to minimize only the sum of the squared distances.
输入格式
The first line of input contains integer $n$ ( $1<=n<=2·10^{5}$ ) — number of vertices in tree.
The next $n-1$ lines of input contains integers $a$ and $b$ ( $1<=a,b<=n,a≠b$ ) — the descriptions of edges. It is guaranteed that the given edges form a tree.
The next $n-1$ lines of input contains integers $a$ and $b$ ( $1<=a,b<=n,a≠b$ ) — the descriptions of edges. It is guaranteed that the given edges form a tree.
输出格式
In the first line output integer $k$ ( $0<=k<=2n$ ) — the number of transformations from your example, minimizing sum of squared distances between all pairs of vertices.
In each of the next $k$ lines output three integers $x,y,y'$ — indices of vertices from the corresponding transformation.
Transformations with $y=y'$ are allowed (even though they don't change tree) if transformation conditions are satisfied.
If there are several possible answers, print any of them.
In each of the next $k$ lines output three integers $x,y,y'$ — indices of vertices from the corresponding transformation.
Transformations with $y=y'$ are allowed (even though they don't change tree) if transformation conditions are satisfied.
If there are several possible answers, print any of them.
输入输出样例
输入 #1
3 3 2 1 3
输出 #1
0
输入 #2
7 1 2 2 3 3 4 4 5 5 6 6 7
输出 #2
2 4 3 2 4 5 6
This is a picture for the second sample. Added edges are dark, deleted edges are dotted.


C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted