結果

問題 No.2290 UnUnion Find
コンテスト
ユーザー ああ
提出日時 2026-05-14 22:11:29
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 399 ms / 2,000 ms
コード長 575 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 629 ms
コンパイル使用メモリ 85,120 KB
実行使用メモリ 115,584 KB
最終ジャッジ日時 2026-05-14 22:11:49
合計ジャッジ時間 20,210 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge2_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 46
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

def aa(m):
    c=[]
    while m!=uf[m]:
        c.append(m)
        m=uf[m]
    for i in c:
        uf[i]=m
    return m

n,q=map(int,input().split())
uf=[i for i in range(n)]
s=set([i for i in range(n)])
for i in range(q):
    c=list(map(int,input().split()))
    if c[0]==1:
        a,b=c[1]-1,c[2]-1
        a,b=aa(a),aa(b)
        if a==b:
            continue
        s.discard(b)
        uf[b]=a
    else:
        if len(s)==1:
            print(-1)
            continue
        a,b=s.pop(),s.pop()
        print(b+1 if aa(c[1]-1)==a else a+1)
        s.add(a);s.add(b)
0