此题直接使用暴力求解,在建树之后,对于每一个点计算它的子节点的个数,并用map表记录下来,对于拥有同一个个数子节点的节点,记数量为m,相互之间的组合数量即为C(m,2),即m*(m-1)/2
T = int(input())
while T > 0:
T -= 1
n = int(input())
小美对于给定的由n个节点构成,根节点为1的有根树中,我们定义节点u和v是“相似节点”,当且仅当节点u的子点数量sonu与节点v的子点数量sonu相等。
输出“相似节点”的对数。
每个测试文件均含多组测试数据。第一行输入一个整数T(1≤T≤104)代表数据组数,每组测试数据描述如下:
第一行输入一个整数n(1≤n≤100)代表节点数量。
此后n−1行,第i行输入两个整数ui和vi(1≤ui,vi≤n;ui=vi)表示树上第i条边连接节点ui和vi。保证树联通,没有重边。
除此之外,保证所有的n之和不超过2×105
对于每一组测试数据,在一行上输出一个整数,代表图中”相似节点“的对数。
输入
1
7
1 2
1 3
3 5
3 7
2 4
2 6
输出
9