#P12803. [AMPPZ 2019] Little Worm
[AMPPZ 2019] Little Worm
题目背景
Source: AMPPZ 2019.
题目描述
小虫住在一棵树上。 这棵树有 个顶点(并且是一个连通的、无向的无环图),小虫占据了顶点 和 之间的整条路径。
小虫想移动到另一条路径——顶点 和 之间的那条路径——因为那里阳光更充足。 已知路径 和 没有公共顶点。
为了改变它在树上的位置,小虫可以进行一些移动,这些移动包括让小虫的任意一端进入一个空闲顶点。 形式化地说,如果小虫当前占据 和 之间的路径,它可以选择一个与 相邻的新顶点 ,该顶点不在路径 上。 然后小虫释放(停止占据) ,改为占据 。 类似地,小虫可以选择一个与 相邻的顶点 ,释放 并占据 。 在一次移动后,小虫仍然占据着某条路径,并且其长度不变。
小虫的目标是到达 和 之间的路径,但由于相当懒惰,它计划移动不超过 次。 你能帮助它在不超过该限制的情况下达到目标吗?
输入格式
本题单个测试点内有多组测试数据。
输入的第一行包含测试数据的组数 ()。测试数据组随后给出,每组格式如下:
- 测试数据的第一行包含一个整数 () —— 树的顶点数。 接下来的 行每行包含两个整数 (),描述一条边的两个端点。
- 下一行给出两个整数 和 ()。 这些是小虫起始位置路径的端点。
- 下一行包含小虫目标路径的端点,以两个整数 和 () 给出。
和 之间路径上的顶点数与 和 之间路径上的顶点数相同。 你也可以假设这两条路径没有公共顶点。
所有测试数据的 值之和不超过 。
输出格式
对于每组测试数据,如果小虫不能在 次移动内达到目标,则输出 。 否则,在两行中输出小虫移动的一种可能序列:
- 第一行:移动次数 (),
- 第二行: 个整数 —— 所需的移动序列。
对于 ,值 应表示第 次移动中小虫进入的顶点。
你可以输出任何将小虫移动到目标路径且移动次数不超过 的正确序列(特别地,你不需要最小化移动次数)。 假设小虫是对称的——它可以向两个方向移动,并且可以以任意一端朝向进入目标路径。
3
6
1 2
1 3
1 4
4 5
4 6
2 3
5 6
15
1 2
1 6
2 3
2 4
2 5
6 7
6 8
5 9
6 10
9 11
9 12
9 13
12 14
14 15
14 13
3 6
6
1 2
1 3
2 4
4 5
5 6
4 6
3 2
-1
7
15 5 2 1 6 7 3
3
2 1 3