#P6411. 带劲的and和
带劲的and和
Problem Description
度度熊专门研究过“动态传递闭包问题”,他有一万种让大家爆蛋的方法;但此刻,他只想出一道简简单单的题——至繁,归于至简。
度度熊有一张n个点m条边的**无向图**,第$i$个点的点权为$v_i$。
如果图上存在一条**路径**使得点$i$可以走到点$j$,则称$i,j$是**带劲**的,记$f(i,j)=1$;否则$f(i,j)=0$。显然有$f(i,j) = f(j,i)$。
度度熊想知道求出:
$\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} f(i,j) \times \max(v_i, v_j) \times (v_i \& v_j)$
其中$\&$是C++中的and位运算符,如1&3=1, 2&3=2。
请将答案对$10^9+7$取模后输出。
Input
第一行一个数,表示数据组数$T$。
每组数据第一行两个整数$n,m$;第二行$n$个数表示$v_i$;接下来$m$行,每行两个数$u,v$,表示点$u$和点$v$之间有一条无向边。**可能有重边或自环。**
数据组数T=50,满足:
- $1 \le n,m \le 100000$
- $1 \le v_i \le 10^9$。
其中90%的数据满足$n,m \le 1000$。
Output
每组数据输出一行,每行仅包含一个数,表示带劲的and和。
1
5 5
3 9 4 8 9
2 1
1 3
2 1
1 2
5 2
99