#406. [R65D]构造树
[R65D]构造树
时空限制
1S/512M
题目描述
有 个编号为 到 的点。你需要构造一棵有根树。
对于每个点 ,给定两个整数:
- :点 在树中的深度(根节点的深度为 );
- :点 最多可以拥有的儿子数量。
对于任意非根节点 ,其父亲的编号是 。
在所有合法的构造中,你需要使父亲数组 的字典序最小(其中根节点的父亲记为 )。
保证存在至少一种合法的构造方法。
格式
输入格式
第一行输入一个正整数 。
接下来 行,每行输入两个非负整数 和 ,表示第 个点的深度和最大儿子数量。
输出格式
输出一行 个整数 ,中间用单个空格隔开,表示字典序最小的合法父亲数组。
样例
样例输入 #1
6
0 3
1 2
1 0
2 0
2 0
1 1
样例输出 #1
0 1 1 2 2 1
样例解释 #1
各个点的深度和最大儿子数如下:
- 点 :深度 ,最大儿子数
- 点 :深度 ,最大儿子数
- 点 :深度 ,最大儿子数
- 点 :深度 ,最大儿子数
- 点 :深度 ,最大儿子数
- 点 :深度 ,最大儿子数
构造出的树结构为:
- 为根节点,。
- 深度为 的点 的父亲均为 (即 )。点 的实际儿子数量为 。
- 深度为 的点 的父亲均为 (即 )。点 的实际儿子数量为 。
最终的父亲数组为 0 1 1 2 2 1,这是所有合法构造中字典序最小的。
样例输入 #2
3
0 1
1 1
2 0
样例输出 #2
0 1 2
样例解释 #2
深度关系为 (深度 0) (深度 1) (深度 2)。
对应的父亲数组为 0 1 2。
数据规模
注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。
| 子任务编号 | 分数 | |
|---|---|---|
对于 的数据,,,。
Related
In following contests: