题目描述
给定一棵含有 n 个顶点的树,顶点从 1 到 n 编号,树上第 i(1≤i≤n−1)条边连接顶点 ui 和 vi。
现在,我们想要给树的每条边一个定向。任何一个定向都可以用一个长度为 n−1 的字符串 S=s1s2⋯sn−1 来描述。其中 si=0 代表第 i 条边定向为 ui→vi,否则 si=1 代表第 i 条边定向为 vi→ui。
给定 m 个顶点对 (ai,bi),其中 1≤ai,bi≤n 且 ai=bi。
一个 完美定向 定义为:在此定向下,对于任意 1≤i≤m,ai 不能到达 bi。
试求在所有完美定向中,所对应的字符串字典序最小的定向。数据保证存在至少一个完美定向。
定义字符串 S=s1⋯sn−1 的字典序小于 T=t1⋯tn−1:若存在一个下标 k 使得 s1=t1,s2=t2,⋯,sk−1=tk−1 且 sk<tk。
输入格式
从文件 tree.in
中读入数据。
输入的第一行包含三个非负整数 c,n,m,分别表示测试点编号,树的点数,顶点对的个数。其中 c=0 表示该测试点为样例。
接下来 n−1 行,每行包含两个正整数 ui,vi 表示树的一条边。保证 1≤ui,vi≤n 且这 n−1 条边构成了一棵树。
接下来 m 行,每行包含两个正整数 ai,bi。保证 1≤ai,bi≤n 且 ai=bi。
输出格式
输出到文件 tree.out
中。
输出一行包含一个字符串 S=s1⋯sn−1,表示字典序最小的完美定向所对应的 01 字符串。
0 4 2
1 2
2 3
3 4
3 2
1 4
001
样例 1 解释
在该样例中,若 S=000,则该定向中 1 能到达 4(存在路径 1→2→3→4),因而不是完美定向。若 S=001,则该定向中 3 不能到达 2,1 不能到达 4,因面是完美定向。故答案为 001。
0 6 8
5 1
2 3
1 2
5 6
4 3
4 3
5 1
6 3
5 4
1 4
5 2
3 6
6 2
10101
样例 2 解释
在该样例中,一组完美定向必定满足 4 不能到达 3,5 不能到达 1,故 s1=s5=1。若 s2=s3=0,则存在路径 1→2→3→4,故 1 可到达 4,故其不是完美定向。因此,所有完美定向必定满足 S 的字典序不小于 10101。且容易验证 S=10101 时,对应的定向是完美定向。
样例 3
见选手目录下的 tree/tree3.in
与 tree/tree3.ans
。
这个样例满足测试点 1∼3 的约束条件。
样例 4
见选手目录下的 tree/tree4.in
与 tree/tree4.ans
。
这个样例满足测试点 4∼6 的约束条件。
样例 5
见选手目录下的 tree/tree5.in
与 tree/tree5.ans
。
这个样例满足测试点 7∼8 的约束条件。
样例 6
见选手目录下的 tree/tree6.in
与 tree/tree6.ans
。
这个样例满足测试点 9∼10 的约束条件。
数据范围
对于所有测试数据保证:2≤n≤5×105,1≤m≤5×105,1≤ui,vi≤n 且所有的边构成了一棵树,1≤ai,bi≤n 且 ai=bi。
数据保证存在至少一个完美定向。
测试点编号 |
n |
m |
特殊性质 |
1∼3 |
≤15 |
≤50 |
无 |
4∼6 |
≤300 |
7,8 |
≤400 |
=(n−1)(n−2) |
A |
9,10 |
≤2000 |
B |
11∼14 |
无 |
15,16 |
≤105 |
B |
17,18 |
无 |
19∼21 |
≤2×105 |
22∼25 |
≤5×105 |
特殊性质 A:保证 (a,b) 出现在 (ai,bi) 中当且仅当 a=b 且 a,b 在树上不相邻。
特殊性质 B:保证树上编号为 1 的顶点与其他每个顶点均相邻。