幻想乡

幻想乡

【问题描述】
众所周知,通过了博丽大结界,就是幻想乡。
八云紫在幻想乡内定义了一种特殊的运算。它的定义域为K={0,1,2,……,K-1}
并定义了一种在这个集合上的运算⊕。∀a,b∈∃c∈K,使得a⊕b=c.
同时,为了维护幻想乡的稳定,这个运算是有交换律和结合律的。也就是说,∀a,b∈K,a⊕b=b⊕a,∀a,b,c∈K,(a⊕b)⊕c=a⊕(b⊕c).
博丽灵梦为了防止八云紫独揽大权,决定也对这个运算做一些处理。于是她保证,对于任意的i,{i⊕j|j∈K}=K,也就是说,i和所有的j进行⊕运算之后,得到的也是0一个到k-1的排列。
幻想乡一共有n个城市,形成了一棵树。这n个城市中有若干个组敌对城市,比如所在的城市和犬走椛所在城市。同时,为了加强专制主义中央集权,城管和八云紫发表四二六社论,将博丽神社所在的1号城市设为首都。因为幻想乡的居民都是热爱和平,所以每个城市最多只有一个敌对城市,敌对关系是双向的。同时一个城市通往首都的路上不会有和他敌对的城市,否则就去不了博丽神社交保护费参拜了。
魔法师魔理沙为了增添她生活中的乐趣,决定对每一条路径施加魔法,每一条路径上就有一个值为0<=c<=k-1,现在有一个西方记者射命丸文要从一个城市走到另一个城市,一开始他手上没有数。
当他手上的数为a时,经过一条权为c的道路后手上的数会变成a⊕c.
特殊地,没有数的时候手上的数就会变成那个数。
如果一条路径上不存在敌对城市,则称为这一条路径为安全路径。现在记者想知道,对于所有的安全路径,她最后手上的数是多少。由于可能有很多路径,只需要知道所有的数的和就可以了。u﹣>v和v﹣>u是两条不同的路径。
【输入格式】
第一行一个字符串str,表示数据类型。
第二行一个正整数k,表示集合k的大小,保证k>l。
接下来k行每行k个数,第i行第j个数表示i⊕j的值,数据保证满足上文所提到的运算律。
接下来一行一个整数n,表示城市的总数。
接下来n-1行,每行三个整数u,v,c表示在城市u和城市v之间有一条权为c的道路。
接下来一行n个数,第i个数表示城市i的敌对城市x[i],若i[i]=0表示第i座城市非常热爱和平,否则保证有x[x[i]]=i.
【输出格式】
只含一个整数,表示所有路径上的记者最终手上的数的和。
【输入输出样例】
gensokyo.in
F
2
0 1
1 0
4
1 2 1
2 3 1
2 4 0
0 0 4 3
gensokyo.out
6
城市编号和数据范围:http://pan.baidu.com/s/1hrUfgMg