結果
| 問題 | No.1640 簡単な色塗り |
| コンテスト | |
| ユーザー |
ygd.
|
| 提出日時 | 2021-08-06 22:37:35 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,330 bytes |
| 記録 | |
| コンパイル時間 | 142 ms |
| コンパイル使用メモリ | 82,480 KB |
| 実行使用メモリ | 141,000 KB |
| 最終ジャッジ日時 | 2024-06-29 15:43:45 |
| 合計ジャッジ時間 | 22,018 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 2 |
| other | AC * 26 WA * 27 |
ソースコード
from heapq import heapify, heappop, heappush
from collections import defaultdict
from collections import deque
def main():
N = int(input())
deg = [0]*N
dic = defaultdict(list)
for i in range(N):
a,b = map(int,input().split())
a -= 1; b -= 1
deg[a] += 1
deg[b] += 1
dic[a].append((b,i)) #行先、辺の番号
dic[b].append((a,i))
PQ = []
for i in range(N):
heappush(PQ,(deg[i],i))
Q = deque([])
#for i in range(N):
# heappush(PQ,(deg[i],i))
ret = []
used_point = set([])
used_edge = set([])
while PQ:
d,i = heappop(PQ)
if i in used_point: continue
Q.append(i)
while Q:
v = Q.popleft()
#print("v",v)
if v in used_point: continue
for u,edge_idx in dic[v]:
#print(u,edge_idx,used_edge)
if edge_idx in used_edge: continue
ret.append(v)
used_point.add(v)
used_edge.add(edge_idx)
if u not in used_point:
Q.append(u)
break
#print(ret)
if len(ret) == N:
print('Yes')
ret = [x+1 for x in ret]
print(*ret,sep="\n")
else:
print('No')
if __name__ == '__main__':
main()
ygd.