题号:NC25526
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
给定一棵以 1 为根,大小为 N 的树,每个点有若干条出边,如果你要

的话,它们需要按照输入的顺序去遍历(就是指定了

序)
你需要维护一种数据结构,支持两种操作:
1 x:将 x 为根的子树中的节点,以

序为下标,编号大小为关键字排序。相当于树的形态不变,但是子树里节点的编号排了遍序,

序小的对应编号小的,

序大的对应编号大的
2 x:查询原先树中点 x 现在的编号是多少
一共会给出 Q 个询问。
输入描述:
第一行两个整数 N,Q
之后有 N 行,第 i+1 行的第一个数
表示节点 i 有
个儿子,之后有
个数,表示这些儿子
之后有 Q 行,每行诸如1 x或者2 x
输出描述:
对于每一个询问操作,输出一行一个整数
示例1
输入
复制
5 6
2 2 3
2 4 5
0
0
0
1 1
2 1
2 2
2 3
2 4
2 5
备注:
对于
的数据,保证 N,Q 要么都是 10,要么都是 