#CF2241E. 公平平方

公平平方

当前没有测试数据。

题目描述

树是一张无环的无向连通图。

给定一棵具有 nn 个顶点的树,每个顶点 ii 上写有整数 aia_i。

对于任意两个顶点 u,vu,v(u≠vu\neq v),定义 p(u,v)p(u,v) 为 uu 到 vv 的唯一简单路径上所有顶点权值的乘积。

一个由三个互不相同顶点构成的无序三元组 {u,v,w}\{u,v,w\},当且仅当 p(u,v)⋅p(v,w)⋅p(w,u)p(u,v)\cdot p(v,w)\cdot p(w,u) 是完全平方数时,称该三元组为好三元组。

请求出树中好三元组的总数量。

简单路径定义:从顶点 uu 到 vv 的简单路径是一列互不相同顶点 u=x0,x1,…,xk=vu=x_0,x_1,\dots,x_k=v,对所有 1≤i≤k1\le i \le k,xi−1x_{i-1} 与 xix_i 之间存在边。

输入格式

第一行输入整数 tt(1≤t≤1041\le t \le 10^4),代表测试用例组数。

每组测试用例: 第一行输入整数 nn(3≤n≤2⋅1053\le n \le 2\cdot 10^5),代表树的顶点数量。 第二行输入 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n(1≤ai≤1061\le a_i \le 10^6),代表各个顶点上的权值。 接下来 n−1n-1 行,每行两个整数 u,vu,v(1≤u,v≤n1\le u,v \le n),代表树的一条边,保证输入构成一棵树。

保证所有测试用例的 nn 之和不超过 2⋅1052\cdot 10^5。

输出格式

对每组测试用例,输出树中好三元组的数目。

4
5
1 1 1 1 1
1 2
2 3
2 4
4 5
10
1 2 3 4 5 6 7 8 9 10
1 3
2 6
6 7
5 4
8 3
3 4
4 6
9 1
10 2
6
12 6 3 18 9 2
3 4
4 5
2 6
6 1
4 2
8
3 16 9 1 8 16 4 9
2 1
3 1
4 3
3 5
6 3
4 7
8 1
10
48
0
40

说明

第一组测试样例中,所有由3个不同顶点组成的无序三元组都是好三元组,一共10个。

第二组测试样例中,{2,5,8}\{2,5,8\} 就是一个好三元组。

原题链接

原题链接