問題一覧 > 通常問題

No.650 行列木クエリ

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 80
作問者 : はむこ / テスター : tanzaku
4 ProblemId : 1317 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2020-01-03 17:53:40

問題文

頂点nからなる木が与えられる。
頂点には番号i(0i<n)がついている。根は0である。
辺には番号i(0i<n1)がついており、辺iは頂点aiと頂点biを繋ぐ。

各辺iには、2×2行列Xi(0i<n1)が載っている。Xiの初期値は単位行列である。

以下のクエリをq個処理せよ。
(1) 変更クエリx
x i x00 x01 x10 x11
Xi(0i<n1)(x00x01x10x11)に変更する。
(2) 取得クエリg
g i j
頂点iは頂点jの先祖であることが保証される。
頂点iから頂点jへのパスの辺に載っている行列を、すべて掛けた行列の各要素を109+7で割った出力する。
根側が左、葉側が右になるほうにかける。

入力

n
a0 b0
a1 b1

an2 bn2
q
query1

queryq

入力は全て整数。

2n100000
1q20000

クエリx
0i<n1
0xst1000

クエリg
0i,j<n

クエリgが1個以上あることが保証される。

出力

答えが(c00c01c10c11)であれば、
c00 c01 c10 c11の順番で一行で出力せよ。

サンプル

サンプル1
入力
6
0 1
1 3
0 2
2 4
2 5
8
x 2 1 3 0 2
x 3 6 2 8 7
g 0 2
g 0 4
g 0 5
g 2 5
x 4 7 2 4 9
g 0 5
出力
1 3 0 2
30 23 16 14
1 3 0 2
1 0 0 1
19 29 8 18

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。