結果
問題 | No.1640 簡単な色塗り |
ユーザー | sotanishy |
提出日時 | 2021-08-06 22:07:00 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 351 ms / 2,000 ms |
コード長 | 1,017 bytes |
コンパイル時間 | 193 ms |
コンパイル使用メモリ | 82,276 KB |
実行使用メモリ | 120,956 KB |
最終ジャッジ日時 | 2024-06-29 15:15:29 |
合計ジャッジ時間 | 18,491 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 53 |
ソースコード
import sys input = sys.stdin.readline N = int(input()) G = [set() for _ in range(N)] deg = [0] * N for i in range(N): A, B = map(lambda x: int(x) - 1, input().split()) G[A].add((B, i)) G[B].add((A, i)) deg[A] += 1 deg[B] += 1 if 0 in deg: print("No") exit() st = [] for v in range(N): if deg[v] == 1: st.append(v) ans = [0] * N while st: v = st.pop() if deg[v] == 0: print("No") exit() u, i = next(iter(G[v])) deg[v] -= 1 deg[u] -= 1 G[v].remove((u, i)) if u != v: G[u].remove((v, i)) ans[i] = v if deg[u] == 1: st.append(u) for s in range(N): if deg[s] == 0: continue st.append(s) while st: v = st.pop() u, i = next(iter(G[v])) deg[v] -= 1 deg[u] -= 1 G[v].remove((u, i)) if u != v: G[u].remove((v, i)) ans[i] = v if deg[u] == 1: st.append(u) print("Yes") print(*map(lambda x: x + 1, ans), sep='\n')