P4847 银河英雄传说V2

题目背景

小H昨天看到了luogu P1196这一题,触发了他内心中对英雄的感慨/雾。可是无奈他不会这一题,只好去请教小W。在讲完那一题之后,小W灵机一动——不如改一下这道题吧。 于是,一个很水的签到题出现了。

题目描述

某dalao:把题目说简单一点,方便让我一分钟A掉! 于是小W只好把题意简化一下: 给定n个长度为1的序列,第i个序列中有一个元素,值为ai,接下来有三种操作: 1. `M x y`,表示把x所在的序列放到y所在的序列之后。如果x,y已经在同一个序列,则不进行操作。 2. `D x`,表示把x所在的序列中从x处断开,也就是把x及x之后的元素单独取出来作为一个序列。 3. `Q x y`,表示查询x到y之间(包括x和y)所有元素的值之和。如果x和y不在同一个序列之中,输出-1.

输入格式

输出格式

说明/提示

(出题人非常良心地给了一个大一点的样例!) 样例1解释: 首先有5个序列(一个横排为一个序列),排列如下: ``` 1 2 3 4 5 ``` 第一个操作将1放到4的后面,变成 ``` 2 3 4,1 5 ``` 第二个操作将3放到2后面,变成 ``` 2,3 4,1 5 ```` 然后查询第5个元素到第2个元素之间的和,由于不存在,输出-1; 将3所在的序列加到4所在的序列后面,变成 ``` 4,1,2,3 5 ``` 接下来变成了5,4,1,2,3,也就是所有元素都在1个序列了,因此接下来的两个合 并操作没有用了,然后把1之后的数字删除,变成: ``` 1,2,3 5,4 ``` 查询2到2,输出2的值,也就是55352; 查询2到1,输出2+1的值,也就是113122. ![Luogu](https://cdn.luogu.com.cn/upload/pic/30577.png) ~~为了避免某些乱搞(可能避免不了)~~,**前5个点按照传统方式计分,每个测试点10分;后五个点为subtask,必须全部通过才能得分,否则不得分。** 对于所有数据,1