SP23134 DCEPC13F - Help Me Please!

题目描述

在大学的某天,Deepankar 和 Rishabh 正在讨论一些复杂到常人无法理解的话题。正巧 Amit 走过来听到了他们的讨论。结果发现他们正在研究一个难题,Amit 一下子就被这个问题难住了,不知道如何下手。因此,你的任务就是帮助 Amit 解决这个难题。 **问题描述** 你一开始拥有一个编号为 1 的节点,节点的初始值为 0。接下来,您将会收到以下两种类型的查询请求: 1. **ADD**:向图中添加一个新节点,并用一个边从已存在的节点连接到该节点,同时为这个节点赋一个整数值。 2. **RETURN**:返回在时间 A 到 B(包括 A 和 B)期间,以节点 X 为根的子树中所有新添加节点的总值。 初始化的节点被视为形成树的根节点。 每个 ADD 查询用时 1 个时间单位,而 RETURN 查询不消耗时间。时间从 1 开始计时,也就是说,在执行所有操作前时间为 1,第一个 ADD 查询后时间变为 2,以此类推。 插入图中的节点按顺序编号。初始节点编号为 1,后续插入的节点依次为 2,3,依此类推。 节点的值为 V 加上上一次 RETURN 查询的结果,其中 V 是 ADD 查询中提供的数值。如果之前没有执行过 RETURN 查询,则仅用 V 作为节点值。 为防答案过大,每个查询的结果请输出对 **1000000007** 取模后的值。

输入格式

第一行包含一个整数 Q,代表查询的总数量。 接下来的每一行表示一个查询。首个数字是查询类型,1 表示 **ADD**,2 表示 **RETURN**。对于 **ADD** 查询,行中还包含两个数字 X 和 V,表示连接到的节点编号和赋予的节点值。对于 **RETURN** 查询,行中有三个数字 A、B 和 X,含义如上所述。 可以保证 **ADD** 查询中的 X 总是一个已存在的节点编号。

输出格式

对于每个 **RETURN** 查询,输出一行,包含该查询的结果。 **本翻译由 AI 自动生成**