最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 简单树

C++ 少儿编程 1072浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

给出一棵$n$个点的树,点从$1$到$n$编号,给出树上每条边的长度。

你需要顺次执行$m$个操作,操作有三个参数$L;R;x$:对于当前这棵树,查询编号在$[L,R]$内的所有点到点$x$的距离之和。

数据可能会强制在线。

【输入】

第一行三个整数$n,m,type$,$type=1$表示数据强制在线。

接下来$n−1$行,其中第$i$行包含三个正整数$a,b,c$,表示树上的第$i$条边连接点$a$和点$b$,边的长度为$c$。

接下来$m$行,顺次描述$m$个操作。

若$type=1$:

①、设$lastans$为上一次操作的答案模$n$的值(初始为$0$)。

②、对于每个操作,输入的$L,R,x$都需要异或$lastans$。

【输出】

对于每个操作,输出一行一个整数表示答案。

【输入样例】

5 3 0
1 2 3
1 3 3
2 4 3
2 5 3
1 5 3
1 5 2
2 3 4

【输出样例】

27
15
12

【提示】

【样例解释】

第1次操作:答案$= 3 + 6 + 0 + 9 + 9 = 27$。

第3次操作:答案$= 3 + 0 + 6 + 3 + 3 = 15$。

第4次操作:答案$= 3 + 9 = 12$。

【数据规模及约定】

对于100%的数据,$1≤n,m≤60000,0≤type≤1,1≤a,b≤n,0≤c≤10^9$。

您必须 登录 才能发表评论!