小 P 有一棵大小为 n 的树,这棵树一共有 n − 1 条无向边,树上的每一条边 都有一个权值 t。 定义一条简单路径的价值为该路径上所有边的权值的异或值。 小 P 对这棵数很感兴趣,因此他会针对这棵树作出以下的两种询问:。
从文件 tree.in 中读入数据。 第一行一个整数 n, m,分别表示树的大小和操作与询问的总数。 接下来一共 n − 1 行,第 i 行表示编号为 i 的边的具体信息,共三个整数 xi , yi , ti,表示第 i 个条边为 (xi , yi),权值为 ti。 接下来一共 m 行,每一行表示一个询问或修改操作。 每一行的第一个整数为 op。 若 op = 1,则表示这是一个询问操作,后跟一个整数 x,询问以 x 为端点的 所有简单路径的最大价值。 若 op = 2,则表示这是一个询问操作,后跟一个整数 x,询问以 x 为端点的 所有简单路径的价值之和。 若 op = 3,则表示这是一个修改操作,后跟两个整数 v, w,表示将编号为 v 的边的权值修改为 w。
对于每一个询问操作,输出一行一个整数表示相应的答案。
6 6 1 2 8 1 3 4 2 4 7 3 5 7 5 6 13 1 2 3 3 7 1 5 3 2 11 3 4 5 2 4
12 13 39
8 8 4 2 9 2 5 7 1 2 9 1 3 15 3 6 14 5 7 5 5 8 9 2 8 1 5 3 6 2 1 1 2 6 3 4 2 2 8 1 3
63 15 15 58 64 14