A 如如的旅行
有一个n个结点的树,结点编号1~n,如如在1号点。
树是一种特殊的无向图,满足边数=点数-1,并且从任意点出发都能到达所有的点。此问题有边权。
因为他是如如,所以他如来,我们只知道他走了k步,每步是从一个结点u走向结点v,并且u与v之间有边。注意可以走回头路。
如如对他创造的世界有一个满意值。一开始,他的满意值是0。每走一步,他的满意值都会变成(原来的值 按位异或 这一步走过的边权)
求如如所有可能的(不同的最终满意值)数量。例如:如如最终满意值可能为6、7、8,则答案为3。
什么是按位异或?
按位异或是一种二元运算。
按位异或运算将两个运算分量的对应位按位遵照以下规则进行计算: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0 即相应位的值相同的,结果为 0,不相同的结果为 1。
例如,3 ^ 6结果为5 因为3表示为二进制为0011,6表示为二进制为0110,对每一位按上面的规则计算,
3^6=5
0011
^ 0110
---------
0101
结果为0110,转成十进制为5。
在C++中,A 按位异或 B 写作 A^B,这个运算符的优先级很低。
输入格式:
第一行两个整数n,k
第2~n行,每行3个整数u,v,x,表示结点u和结点v之间有一条边权为x的边。
输出格式:
一行一个整数,表示答案对998244353取模的值。
样例输入 #1:
3 1
1 2 1919810
1 3 114514
样例输出 #1:
2
样例解释:可能的答案有两种,114514和1919810。
样例输入 #2:
5 2
1 2 3
1 3 4
2 4 5
3 5 2
样例输出 #2:
2
数据范围:
对于10%的数据,$n \le 10, k \le 5$
对于30%的数据,$n \le 100,k \le 100$
另有20%的数据,$x=0$
对于100%的数据,$1 \le n \le 200000, 1 \le k \le 10^{18},0 \le x \le 10^{18}$