結果
| 問題 |
No.2290 UnUnion Find
|
| コンテスト | |
| ユーザー |
komkompi
|
| 提出日時 | 2023-06-11 01:01:21 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 939 bytes |
| コンパイル時間 | 386 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 50,604 KB |
| 最終ジャッジ日時 | 2025-01-03 03:29:03 |
| 合計ジャッジ時間 | 92,720 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 6 WA * 24 TLE * 16 |
ソースコード
# coding: utf-8
# Your code here!
N,Q=map(int,input().split())
par = [i for i in range(N+1)]
rank = [0]*(N+1)
def find(x):
if par[x] == x:
return x
else:
par[x] = find(par[x]) #経路圧縮
return par[x]
def same(x,y):
return find(x) == find(y)
def unite(x,y):
x = find(x)
y = find(y)
if x == y:
return 0
if rank[x] < rank[y]:
par[x] = y
else:
par[y] = x
if rank[x]==rank[y]:rank[x]+=1
is_par=set([i for i in range(N)])
for _ in range(Q):
q=input().split()
if q[0]=="1":
u,v=int(q[1])-1,int(q[2])-1
unite(u,v)
if find(u)!=u and u in is_par:
is_par.remove(u)
if find(v)!=v and v in is_par:
is_par.remove(v)
else:
v=int(q[1])-1
ans=-1
for u in is_par:
if u!=v:
ans=u+1
break
print(ans)
komkompi