結果
問題 | No.556 仁義なきサルたち |
ユーザー |
|
提出日時 | 2022-01-28 12:12:36 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 187 ms / 2,000 ms |
コード長 | 808 bytes |
コンパイル時間 | 342 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 79,232 KB |
最終ジャッジ日時 | 2024-12-28 09:19:01 |
合計ジャッジ時間 | 3,185 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 22 |
ソースコード
N,M = map(int,input().split()) parent = [[i,1] for i in range(N+1)] import sys sys.setrecursionlimit(10 ** 8) def find(i): if parent[i][0] == i:return i parent[i][0] = find(parent[i][0]) return parent[i][0] def unite(i,j): I = find(i) J = find(j) if I == J:return False ni = parent[I][1] nj = parent[J][1] if ni < nj: parent[J][1] += parent[I][1] parent[I][0] = J elif ni > nj: parent[I][1] += parent[J][1] parent[J][0] = I else: if I > J: parent[J][1] += parent[I][1] parent[I][0] = J else: parent[I][1] += parent[J][1] parent[J][0] = I return True for _ in range(M): a,b = map(int,input().split()) unite(a,b) for i in range(1,N+1): print(find(i))