Equation
equation.cpp/in/out
题目描述
有一棵 n 个点的以 1 为根的树,以及 n 个整数变量 xi。树上 i 的父亲是 fi,每条边 (i,fi) 有一个权值 wi,表示一个方程 xi+xfi=wi,这 n−1 个方程构成了一个方程组。
现在给出 q 个操作,有两种类型:
1 u v s,表示询问加上 xu+xv=s 这个方程后,整个方程组的解的情况。具体来说,如果方程有唯一解,输出此时 x1 的值;如果有无限多个解,输出 inf;如果无解,输出 none。注意每个询问是独立的。
2 u w,表示将 wu 修改为 w。
输入格式
从文件 equation.in 中读入数据。
第一行两个整数 n,q。
接下来 n−1 行,第 i 行有两个整数 fi+1 和 wi+1。
接下来 q 行,每行表示一个操作,格式见问题描述。
输出格式
输出到文件 equation.out 中。
对于每个询问输出一行表示答案。
样例输入
文本
2 7
1 4
1 1 2 5
1 1 2 4
1 1 1 3
1 2 2 6
2 2 3
1 2 2 10
1 2 2 -10
样例输出
数据范围
对于所有数据,有 1≤n,q≤106,1≤fi≤i−1,1≤u,v≤n,−103≤w,wi≤103,−109≤s≤109。
- Subtask 1 (3%):n≤10,q=0。
- Subtask 2 (18%):n=2。
- Subtask 3 (32%):n,q≤103。
- Subtask 4 (33%):n,q≤105。
- Subtask 5 (14%):没有特殊的约束。