結果
問題 |
No.1451 集団登校
|
ユーザー |
|
提出日時 | 2022-06-05 08:55:12 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 664 bytes |
コンパイル時間 | 353 ms |
コンパイル使用メモリ | 82,708 KB |
実行使用メモリ | 124,424 KB |
最終ジャッジ日時 | 2024-09-21 04:04:13 |
合計ジャッジ時間 | 6,097 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 12 RE * 15 |
ソースコード
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 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] = {} print(*ans, sep="\n")