結果
問題 |
No.2290 UnUnion Find
|
ユーザー |
![]() |
提出日時 | 2023-06-11 01:03:59 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 945 bytes |
コンパイル時間 | 438 ms |
コンパイル使用メモリ | 12,288 KB |
実行使用メモリ | 50,608 KB |
最終ジャッジ日時 | 2025-01-03 03:30:50 |
合計ジャッジ時間 | 89,405 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 13 WA * 17 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!=find(v): ans=u+1 break print(ans)