結果
問題 | No.1641 Tree Xor Query |
ユーザー |
![]() |
提出日時 | 2022-08-03 02:43:53 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,025 bytes |
コンパイル時間 | 194 ms |
コンパイル使用メモリ | 12,928 KB |
実行使用メモリ | 17,952 KB |
最終ジャッジ日時 | 2024-07-23 20:47:49 |
合計ジャッジ時間 | 7,432 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 10 TLE * 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())))t,x,y = txy[i]if t == 1:continuex -= 1s = sum[x]for j in range(i):nnq = q * nowq + jnt,nx,ny = txy[j]if nt == 2:continuenx -= 1if d[x][0] <= d[nx][0] <= d[x][1]:s ^= nyprint(s)if not p:breakfor i in range(q):nq = q * nowq + it,x,y = txy[i]if t == 2:continuex -= 1C[x] ^= ynowq += 1if __name__ == '__main__':main()