No.2377 SUM AND XOR on Tree
レベル : / 実行時間制限 : 1ケース 4.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 60
作問者 : poyon / テスター : KowerKoint2010 timi hibit_at 👑 seekworser
タグ : / 解いたユーザー数 60
作問者 : poyon / テスター : KowerKoint2010 timi hibit_at 👑 seekworser
問題文最終更新日: 2023-07-06 20:18:56
問題文
$N$ 頂点の木 $T$ があり、各頂点には $1$ から $N$ までの番号が振られています。
$i$ 番目の辺は頂点 $u_i$ と頂点 $v_i$ を結んでいます。頂点 $i$ には非負整数 $A_i$ が書かれています。
木 $T$ から $0$ 本以上の辺を削除して得られるグラフ $G$ は $2^{N-1}$ 通りありますが、
それぞれのグラフ $G$ について $f(G)$ の値を求めて、その総和を $998244353$ で割った余りを求めてください。
ここで、$f(G)$ とは、グラフ $G$ の連結成分ごとに $A_i$ の $\mathrm{XOR}$ を取り、それらの値の $\mathrm{AND}$ を取った値です。
より厳密には以下の通りです。
- $f(G) = g(C_1) \ \mathrm{AND} \ \cdots \ \mathrm{AND} \ g(C_{m_G})$
- $g(C_j) = A_{k_{j,1}} \ \mathrm{XOR} \ \cdots \ \mathrm{XOR} \ A_{k_{j,n_j}} \ (1 \leq j \leq m_G)$
- グラフ $G$ の連結成分は $m_G$ 個あり、$C_1, \dots , C_{m_G}$ で表される
- 連結成分 $C_j$ の頂点は $n_j$ 個あり、$k_{j,1}, \dots , k_{j,n_j}$で表される
なお、$\mathrm{AND}$ はビット単位 $\mathrm{AND}$ 演算、$\mathrm{XOR}$ はビット単位 $\mathrm{XOR}$ 演算を表します。
入力
$N$ $u_1 \ v_1$ $u_2 \ v_2$ $\vdots$ $u_{N-1} \ v_{N-1}$ $A_1 \ A_2 \ \dots \ A_N$
- $2 \leq N \leq 10^5$
- $0 \leq A_i < 2^{30}$
- $1 \leq u_i, v_i \leq N$
- 与えられるグラフは木
- 入力はすべて整数
出力
答えを出力してください。
サンプル
サンプル1
入力
3 1 2 1 3 1 2 3
出力
5
辺を削除する方法は $4$ 通りあります。
- $0$ 本の辺を削除する場合、$f(G) = A_1 \ \mathrm{XOR} \ A_2 \ \mathrm{XOR} \ A_3 = 0$
- $1$ 番目の辺を削除する場合、$f(G) = (A_1 \ \mathrm{XOR} \ A_3) \ \mathrm{AND} \ A_2 = 2$
- $2$ 番目の辺を削除する場合、$f(G) = (A_1 \ \mathrm{XOR} \ A_2) \ \mathrm{AND} \ A_3 = 3$
- $1$ 番目の辺と $2$ 番目の辺を削除する場合、$f(G) = A_1 \ \mathrm{AND} \ A_2 \ \mathrm{AND} \ A_3 = 0$
よって、総和は $0 + 2 + 3 + 0 = 5$ となります。
サンプル2
入力
12 1 2 1 7 2 3 2 4 2 6 3 11 4 5 4 8 5 10 8 9 8 12 353757523 442052636 38474683 454295822 886828797 329385635 709686492 100655361 541398767 782865336 996474425 506498311
出力
159370513
総和を $998244353$ で割った余りで求めることに注意してください。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。