結果
| 問題 |
No.1641 Tree Xor Query
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-09-22 12:10:03 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,141 bytes |
| コンパイル時間 | 264 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 43,820 KB |
| 最終ジャッジ日時 | 2024-12-22 04:47:41 |
| 合計ジャッジ時間 | 5,578 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 RE * 2 |
ソースコード
n,q=map(int,input().split())
c=list(map(int,input().split()))
def init(n):
global seg
global N
N=1
while N < n:
N <<= 1
seg=[0]*(N + N-1)
def query(l, r):
return _query(l, r, 0, 0, N)
def _query(l, r, i, L, R):
if l <= L and R <= r:
return seg[i]
if R<=l or r <= L:
return 0
m=(L+R)//2
v1 = _query(l, r, i*2+1,L, m)
v2 = _query(l, r, i*2+2, m, R)
return v1 ^ v2
def update(i,x):
j=i + N-1
seg[j]^=x
while j > 0:
j = (j - 1) // 2
seg[j] = seg[j*2+1]^seg[j*2+2]
def rec(v, p, vs, g, l , r):
l[v]=len(vs)
vs.append(v)
for nv in g[v]:
if nv == p:
continue
rec(nv, v, vs, g, l, r)
r[v]=len(vs)
g= [[] for _ in range(n)]
for _ in range(n-1):
a,b=map(lambda x: int(x)-1, input().split())
g[a].append(b)
g[b].append(a)
vs = []
l = [0]*n
r = [0]*n
rec(0, -1, vs, g, l, r)
init(len(vs))
for i in range(len(vs)):
update(i, c[vs[i]])
for _ in range(q):
t, x, y = map(int, input().split())
x-=1
if t==1:
update(l[x], y)
else:
print(query(l[x], r[x]))