結果
問題 | No.1054 Union add query |
ユーザー | 👑 SPD_9X2 |
提出日時 | 2020-05-15 22:02:16 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 807 bytes |
コンパイル時間 | 288 ms |
コンパイル使用メモリ | 82,208 KB |
実行使用メモリ | 99,672 KB |
最終ジャッジ日時 | 2024-09-19 10:30:53 |
合計ジャッジ時間 | 4,302 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 34 ms
59,920 KB |
testcase_01 | AC | 34 ms
52,724 KB |
testcase_02 | AC | 33 ms
52,284 KB |
testcase_03 | TLE | - |
testcase_04 | -- | - |
testcase_05 | -- | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
ソースコード
def uf_find(n,p,slis): allsum = 0 while p[n] != n: allsum += slis[n] n = p[n] allsum += slis[n] return n,allsum def uf_union(a,b,p,rank,slis): ap,tmp = uf_find(a,p,slis) bp,tmp = uf_find(b,p,slis) if ap == bp: return True else: p[ap] = len(p) p[bp] = len(p) slis.append(0) p.append(len(p)) return True N,Q = map(int,input().split()) TAB = [] p = [i for i in range(N)] rank = [1] * N slis = [0] * N for i in range(Q): t,a,b = map(int,input().split()) a -= 1 if t == 1: b -= 1 uf_union(a,b,p,rank,slis) elif t == 2: nowp,asum = uf_find(a,p,slis) slis[nowp] += b else: nowp,asum = uf_find(a,p,slis) print (asum)