結果
問題 |
No.1451 集団登校
|
ユーザー |
|
提出日時 | 2022-06-05 08:57:17 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 293 ms / 2,000 ms |
コード長 | 701 bytes |
コンパイル時間 | 158 ms |
コンパイル使用メモリ | 82,096 KB |
実行使用メモリ | 124,744 KB |
最終ジャッジ日時 | 2024-09-21 04:04:19 |
合計ジャッジ時間 | 5,823 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
N, M = map(int, input().split()) MOD = 10 ** 9 + 7 i2 = pow(2, MOD - 2, MOD) ans = [1] * N st = [{i} for i in range(N)] root = list(range(N)) for _ in range(M): a, b = (int(x) - 1 for x in input().split()) ra = root[a] rb = root[b] if ra == rb: continue if len(st[ra]) == len(st[rb]): for x in st[ra]: ans[x] *= i2 ans[x] %= MOD for x in st[rb]: ans[x] *= i2 ans[x] %= MOD root[x] = ra else: if len(st[ra]) < len(st[rb]): ra, rb = rb, ra for x in st[rb]: ans[x] = 0 root[x] = ra st[ra] |= st[rb] st[rb] = set() print(*ans, sep="\n")