题号:NC227006
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld
题目描述
输入描述:
Input begins with a line containing two positive integers

(

) specifying the number of tree descriptions (described below) and the number of query pairs. Following these are

lines, each with one tree description. Each tree description will be of the form

indicating that person

has

children named

through

. All names are unique and contain only alphabetic characters. Tree descriptions may be given in any order (i.e., the root of the entire tree may not necessarily be in the very first tree description). No name will appear more than once as

in the tree descriptions. All the tree descriptions will combine to form exactly one tree, and the tree will have at least

nodes and at most

nodes.
Following this are

lines of the form

where

and both names are guaranteed to be in the tree.
输出描述:
Output the relationship for each pair of people, one per line, using the formats shown in Figure 1. Always output
's name first for each pair except when
is the direct descendant of
(as in the first example in Figure 1). For the
-th ordinal number output
th except for
in which case you should output 1st, 2nd, 3rd, 21st, 22nd, 23rd, 31st, 32nd, 33rd, etc. Also be sure to use times for all times removed except one, where you should use the word time.
示例1
输入
复制
4 5
Horatio 1 Irene
Chris 2 Gina Horatio
Alice 3 Dan Emily Frank
Bob 2 Alice Chris
Irene Bob
Dan Frank
Chris Emily
Alice Chris
Dan Irene
输出
复制
Irene is the great grandchild of Bob
Dan and Frank are siblings
Chris and Emily are 0th cousins, 1 time removed
Alice and Chris are siblings
Dan and Irene are 1st cousins, 1 time removed
示例2
输入
复制
4 6
A 4 B C D E
H 3 I J K
C 2 F G
D 1 H
G C
H A
F G
F H
F K
B K
输出
复制
G is the child of C
H is the grandchild of A
F and G are siblings
F and H are 1st cousins
F and K are 1st cousins, 1 time removed
B and K are 0th cousins, 2 times removed