結果
問題 | No.1641 Tree Xor Query |
ユーザー |
![]() |
提出日時 | 2022-08-03 02:47:48 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,994 bytes |
コンパイル時間 | 403 ms |
コンパイル使用メモリ | 82,136 KB |
実行使用メモリ | 583,192 KB |
最終ジャッジ日時 | 2024-07-23 20:52:32 |
合計ジャッジ時間 | 7,926 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 1 RE * 9 MLE * 1 -- * 7 |
ソースコード
def main():import syssys.setrecursionlimit(10**8)input = sys.stdin.readlineN,Q = map(int,input().split())C = list(map(int,input().split()))def f(n):return int(n) - 1ab = [list(map(f,input().split())) for _ in range(N-1)]# txy = [list(map(int,input().split())) for _ in range(Q)]e = [[] for _ in range(N)]for i in range(N-1):a,b = ab[i]e[a].append(b)e[b].append(a)sum = [0 for _ in range(N)]d = [[0,0] for _ in range(N)]l = [0 for _ in range(N)]def euler(n,k):d[n][0] = kl[n] = 1now = kfor i in e[n]:if l[i] == 1:continueqqq = euler(i,now+1)now = qqqd[n][1] = now + 1return (now + 1)euler(0,0)import mathdef dfs(n):l[n] = 1sum[n] = C[n]for i in e[n]:if l[i]:continues = dfs(i)sum[n] ^= sreturn sum[n]q = math.floor(math.sqrt(Q))nowq = 0while True:for i in range(N):l[i] = 0dfs(0)p = 1txy = []for i in range(q):nq = q * nowq + iif nq >= Q:p = 0breaktxy.append(list(map(int,input().split())))if txy[i][0] == 1:continues = sum[txy[i][1]-1]for j in range(i):# nnq = q * nowq + j# nt,nx,ny = txy[j]if txy[j][0] == 2:continuenx -= 1if d[txy[i][1]-1][0] <= d[txy[j][1]-1][0] <= d[txy[i][1]-1][1]:s ^= txy[j][2]print(s)if not p:breakfor i in range(q):if txy[i][0] == 2:continueC[txy[i][1]-1] ^= txy[i][2]nowq += 1if __name__ == '__main__':main()