結果
| 問題 |
No.1640 簡単な色塗り
|
| コンテスト | |
| ユーザー |
tamato
|
| 提出日時 | 2021-08-06 22:23:03 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 282 ms / 2,000 ms |
| コード長 | 1,416 bytes |
| コンパイル時間 | 189 ms |
| コンパイル使用メモリ | 82,432 KB |
| 実行使用メモリ | 125,508 KB |
| 最終ジャッジ日時 | 2024-06-29 15:28:45 |
| 合計ジャッジ時間 | 15,928 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 53 |
ソースコード
mod = 1000000007
eps = 10**-9
def main():
import sys
from collections import deque
input = sys.stdin.buffer.readline
N = int(input())
ans = [-1] * N
AB = []
cnt = [set() for _ in range(N+1)]
for i in range(N):
a, b = map(int, input().split())
AB.append((a, b))
cnt[a].add(i)
cnt[b].add(i)
que = deque()
for v in range(1, N+1):
if len(cnt[v]) == 0:
print("No")
exit()
elif len(cnt[v]) == 1:
que.append(v)
while que:
v = que.pop()
if len(cnt[v]) == 0:
print("No")
exit()
for i in cnt[v]:
ans[i] = v
a, b = AB[i]
u = a + b - v
if u != v:
cnt[u].discard(i)
if len(cnt[u]) == 1:
que.append(u)
for v0 in range(1, N+1):
if len(cnt[v0]) == 0:
continue
v = v0
while True:
i = list(cnt[v])[0]
ans[i] = v
a, b = AB[i]
u = a + b - v
cnt[v].discard(i)
if u != v:
cnt[u].discard(i)
v = u
if len(cnt[v]) == 0:
break
assert len(set(ans)) == N and sum(ans) == N * (N+1) // 2
print("Yes")
for i in range(N):
print(ans[i])
if __name__ == '__main__':
main()
tamato