QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 2048 MB Total points: 100

#2905. 树上跳跃

Statistics

给定一棵树及其顶点的一个排列。可以证明,对于任何树以及任意一对源节点和目标节点,都存在某种节点排列,使得第一个节点为源节点,最后一个节点为目标节点,且排列中相邻节点之间的距离小于或等于 3。

你的任务是编写一个程序来验证该性质。给定这样一个排列和树,请验证排列中相邻节点之间的距离是否都小于或等于 3。

输入格式

第一行包含一个整数 $t$ ($1 \le t \le 50,000$),表示测试用例的数量。

每个测试用例的第一行包含一个整数 $n$ ($2 \le n \le 100,000$),表示树中的节点数。节点编号从 1 到 $n$。

接下来的 $n - 1$ 行,每行包含一对整数 $a$ 和 $b$ ($1 \le a < b \le n$),表示树中节点 $a$ 和 $b$ 之间的一条边。

接下来的 $n$ 行,每行包含一个整数 $p$ ($1 \le p \le n$,所有值互不相同)。这是节点的排列。

所有测试用例的 $n$ 之和不超过 $100,000$。

输出格式

对于每个测试用例,输出一行,包含一个整数。如果给定的排列满足“排列中每一对相邻节点在树中的距离都小于或等于 3”这一约束,则输出 1;否则输出 0。

样例

样例输入 1

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

样例输出 1

1
0

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.