結果
| 問題 |
No.2301 Namorientation
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-05-13 20:16:36 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 719 ms / 3,000 ms |
| コード長 | 1,212 bytes |
| コンパイル時間 | 218 ms |
| コンパイル使用メモリ | 82,432 KB |
| 実行使用メモリ | 140,244 KB |
| 最終ジャッジ日時 | 2024-11-29 11:43:11 |
| 合計ジャッジ時間 | 19,541 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 30 |
ソースコード
from collections import deque
n = int(input())
g = [[] for _ in range(n)]
deg = [0 for _ in range(n)]
edges = []
for i in range(n):
a, b = map(int, input().split())
a -= 1
b -= 1
edges.append((a, b))
g[a].append((b, i))
g[b].append((a, i))
deg[a] += 1
deg[b] += 1
ans = [None for _ in range(n)]
dq = deque()
used = [False for _ in range(n)]
for v in range(n):
if deg[v] == 1:
used[v] = True
dq.append(v)
while len(dq) > 0:
cur = dq.popleft()
for nxt, e in g[cur]:
if used[nxt]:
continue
a, _ = edges[e]
if a == cur:
ans[e] = "->"
else:
ans[e] = "<-"
deg[nxt] -= 1
if deg[nxt] > 1:
continue
used[nxt] = True
dq.append(nxt)
src = None
for v in range(n):
if not used[v]:
src = v
used[src] = True
dq.append(src)
break
while len(dq) > 0:
cur = dq.popleft()
for nxt, e in g[cur]:
if used[nxt]:
continue
a, _ = edges[e]
if a == cur:
ans[e] = "->"
else:
ans[e] = "<-"
used[nxt] = True
dq.append(nxt)
break
for e in range(n):
if ans[e] is None:
a, _ = edges[e]
if a == src:
ans[e] = '<-'
else:
ans[e] = '->'
print(*ans, sep="\n")