#1447. 血缘关系

血缘关系

题目描述

我们正在研究妖怪家族的血缘关系。

每个妖怪都有相同数量的基因,但是不同的妖怪的基因可能是不同的。

我们希望知道任意给定的两个妖怪之间究竟有多少相同的基因。

由于基因数量相当庞大,直接检测是行不通的。

但是,我们知道妖怪家族的家谱,所以我们可以根据家谱来估算两个妖怪之间相同基因的数量。

妖怪之间的基因继承关系相当简单:如果妖怪C\red C是妖怪A\red AB\red B的孩子,则C\red C的任意一个基因只能是继承A\red AB\red B的基因,继承A\red AB\red B的概率各占50\red {50%}

所有基因可认为是相互独立的,每个基因的继承关系不受别的基因影响。

现在,我们来定义两个妖怪X\red XY\red Y的基因相似程度。

例如,有一个家族,这个家族中有两个毫无关系(没有相同基因)的妖怪A\red AB\red B,及它们的孩子C\red CD\red D

那么C\red CD\red D相似程度是多少呢?因为C\red CD\red D的基因都来自A\red AB\red B,从概率来说,各占50\red {50%}

所以,依概率计算C\red CD\red D平均有50\red {50%}的相同基因,C\red CD\red D的基因相似程度为50\red {50%}

需要注意的是,如果A\red AB\red B之间存在相同基因的话,C\red CD\red D的基因相似程度就不再是50\red {50%}了。

你的任务是写一个程序,对于给定的家谱以及成对出现的妖怪,计算它们之间的基因相似程度。

输入格式

第一行两个整数n\red nk\red k

n(2n300)\red {n(2≤n≤300)}表示家族中成员数,它们分别用12n\red {1,2,…,n}来表示。

k(0kn2)\red {k(0≤k≤n-2)}表示这个家族中有父母的妖怪数量(其他的妖怪没有父母,它们之间可以认为毫无关系,即没有任何相同基因)。

接下来的k\red k行,每行三个整数a\red ab\red bc\red c,表示妖怪a\red a是妖怪b\red bc\red c的孩子。

然后是一行一个整数m(1mn2)\red {m(1≤m≤n^2)},表示需要计算基因相似程度的妖怪对数。

接下来的m\red m行,每行两个整数,表示需要计算基因相似程度的两个妖怪。

你可以认为这里给出的家谱总是合法的。

具体来说就是,没有任何的妖怪会成为自己的祖先,并且你也不必担心会存在性别错乱问题。

输出格式

m\red m行。

k\red k行表示第k\red k对妖怪之间的基因相似程度。

你必须按百分比输出,有多少精度就输出多少,但不允许出现多余的0\red 0(注意,0.001\red {0.001}的情况应输出0.1\red {0.1%},而不是.1\red {.1%})。

具体格式参见样例。

样例

输入样例

7 4
4 1 2
5 2 3
6 4 5
7 5 6
4
1 2
2 6
7 5
3 3

输出样例

0%
50%
81.25%
100%