結果
| 問題 |
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))