ccf#NOI2024C. 树的定向(tree)

树的定向(tree)

题目描述

给定一棵含有 nn 个顶点的树,顶点从 11nn 编号,树上第 ii1in11 \leq i \leq n - 1)条边连接顶点 uiu_iviv_i

现在,我们想要给树的每条边一个定向。任何一个定向都可以用一个长度为 n1n - 1 的字符串 S=s1s2sn1S = s_1 s_2 \cdots s_{n-1} 来描述。其中 si=0s_i = 0 代表第 ii 条边定向为 uiviu_i \to v_i,否则 si=1s_i = 1 代表第 ii 条边定向为 viuiv_i \to u_i

给定 mm 个顶点对 (ai,bi)(a_i, b_i),其中 1ai,bin1 \leq a_i, b_i \leq naibia_i \neq b_i

一个 完美定向 定义为:在此定向下,对于任意 1im1\leq i\leq maia_i 不能到达 bib_i

试求在所有完美定向中,所对应的字符串字典序最小的定向。数据保证存在至少一个完美定向

定义字符串 S=s1sn1S = s_1 \cdots s_{n-1} 的字典序小于 T=t1tn1T = t_1 \cdots t_{n-1}:若存在一个下标 kk 使得 s1=t1,s2=t2,,sk1=tk1s_1 = t_1, s_2 = t_2, \cdots, s_{k-1} = t_{k-1}sk<tks_k < t_k

输入格式

从文件 tree.in 中读入数据。

输入的第一行包含三个非负整数 c,n,mc, n, m,分别表示测试点编号,树的点数,顶点对的个数。其中 c=0c = 0 表示该测试点为样例。

接下来 n1n - 1 行,每行包含两个正整数 ui,viu_i, v_i 表示树的一条边。保证 1ui,vin1 \leq u_i, v_i \leq n 且这 n1n - 1 条边构成了一棵树。

接下来 mm 行,每行包含两个正整数 ai,bia_i, b_i。保证 1ai,bin1 \leq a_i, b_i \leq naibia_i \neq b_i

输出格式

输出到文件 tree.out 中。

输出一行包含一个字符串 S=s1sn1S = s_1 \cdots s_{n-1},表示字典序最小的完美定向所对应的 0101 字符串。

0 4 2
1 2
2 3
3 4
3 2
1 4
001

样例 1 解释

在该样例中,若 S=000S = 000,则该定向中 11 能到达 44(存在路径 12341 \to 2 \to 3 \to 4),因而不是完美定向。若 S=001S = 001,则该定向中 33 不能到达 2211 不能到达 44,因面是完美定向。故答案为 001001

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 解释

在该样例中,一组完美定向必定满足 44 不能到达 3355 不能到达 11,故 s1=s5=1s_1 = s_5 = 1。若 s2=s3=0s_2 = s_3 = 0,则存在路径 12341 \to 2 \to 3 \to 4,故 11 可到达 44,故其不是完美定向。因此,所有完美定向必定满足 SS 的字典序不小于 1010110101。且容易验证 S=10101S = 10101 时,对应的定向是完美定向。

样例 3

见选手目录下的 tree/tree3.intree/tree3.ans

这个样例满足测试点 131 \sim 3 的约束条件。

样例 4

见选手目录下的 tree/tree4.intree/tree4.ans

这个样例满足测试点 464 \sim 6 的约束条件。

样例 5

见选手目录下的 tree/tree5.intree/tree5.ans

这个样例满足测试点 787 \sim 8 的约束条件。

样例 6

见选手目录下的 tree/tree6.intree/tree6.ans

这个样例满足测试点 9109 \sim 10 的约束条件。

数据范围

对于所有测试数据保证:2n5×1052 \leq n \leq 5 \times 10^51m5×1051 \leq m \leq 5 \times 10^51ui,vin1 \leq u_i, v_i \leq n 且所有的边构成了一棵树,1ai,bin1 \leq a_i, b_i \leq naibia_i \neq b_i

数据保证存在至少一个完美定向。

测试点编号 nn mm 特殊性质
131 \sim 3 15\leq 15 50\leq 50
464 \sim 6 300\leq 300
7,87, 8 400\leq 400 =(n1)(n2)= (n-1)(n-2) A
9,109, 10 2000\leq 2\,000 B
111411 \sim 14
15,1615, 16 105\leq 10^5 B
17,1817, 18
192119 \sim 21 2×105\leq 2 \times 10^5
222522 \sim 25 5×105\leq 5 \times 10^5

特殊性质 A:保证 (a,b)(a, b) 出现在 (ai,bi)(a_i, b_i) 中当且仅当 aba \neq ba,ba, b 在树上不相邻。

特殊性质 B:保证树上编号为 11 的顶点与其他每个顶点均相邻。