小苯的xor图
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯拿到了一个由 n 个顶点、m 条无向边组成的简单连通图,每个顶点都有一个权值。
\hspace{15pt}他定义一条长度为 2 的简单路径^\texttt{[1]}的权值为这条路径所连接的三个顶点的权值的异或和^\texttt{[2]}
\hspace{15pt}小苯想知道,这张图中所有长度为 2 的简单路径的权值之和为多少。由于答案可能很大,请将答案对 998\,244\,353 取模后输出。
\hspace{15pt}请你帮帮小苯。

\hspace{15pt}需要注意的是,无向图中 (u ~\texttt{-}~ v ~\texttt{-}~ w)(w ~\texttt{-}~ v ~\texttt{-}~ u) 视为同一条长度为 2 的简单路径;等价于对每个中心点 v 统计其邻居无序对 \{u,w\}

【名词解释】
\hspace{15pt}简单路径^\texttt{[1]}:在图上由若干顶点构成的序列,序列中顶点互不重复,且相邻顶点有边相连;路径长度为其中边的数量。
\hspace{15pt}异或和^\texttt{[2]}:两个数进行按位异或运算的结果。

输入描述:

\hspace{15pt}第一行输入两个整数 n,m\left(1\leqq n\leqq2\times 10^5;\ n-1\leqq m \leqq \min\left(2\times 10^5,\tfrac{n\times \left(n - 1 \right)}{2} \right)\right),表示图的点数、边数。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n\left(0\leqq a_i \leqq 10^9 \right),表示每个顶点的权值。
\hspace{15pt}此后 m 行,第 i 行输入两个整数 u_i,v_i\left(1\leqq u_i,v_i\leqq n \right),表示第 i 条无向边连接顶点 u_i 和顶点 v_i

输出描述:

\hspace{15pt}输出一个整数,代表权值之和对 998\,244\,353 取模后的值。
示例1

输入

复制
5 5
1 2 3 4 5
1 3
1 5
1 2
2 5
2 4

输出

复制
35