結果
| 問題 |
No.2290 UnUnion Find
|
| コンテスト | |
| ユーザー |
ntuda
|
| 提出日時 | 2023-05-06 12:33:09 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 938 ms / 2,000 ms |
| コード長 | 650 bytes |
| コンパイル時間 | 175 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 109,348 KB |
| 最終ジャッジ日時 | 2024-11-23 21:16:38 |
| 合計ジャッジ時間 | 34,182 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 46 |
ソースコード
N,Q = map(int,input().split())
P = [-1] * (N+1)
Ps = set(range(1,N+1))
def root(x):
if P[x] < 0: return x
P[x] = root(P[x]) # 経路圧縮
return P[x]
def unite(x,y):
x = root(x)
y = root(y)
if x == y: return
if x > y: x,y = y,x
P[x] += P[y]
P[y] = x
Ps.remove(y)
def same(x,y):
return root(x) == root(y)
for _ in range(Q):
qu = list(map(int,input().split()))
if qu[0] == 1:
unite(qu[1],qu[2])
else:
if len(Ps) == 1:
print(-1)
else:
for p in Ps:
if not same(p,qu[1]):
print(p)
break
ntuda