結果
問題 | No.2301 Namorientation |
ユーザー |
👑 |
提出日時 | 2023-05-12 22:00:44 |
言語 | Lua (LuaJit 2.1.1734355927) |
結果 |
AC
|
実行時間 | 410 ms / 3,000 ms |
コード長 | 1,441 bytes |
コンパイル時間 | 279 ms |
コンパイル使用メモリ | 5,504 KB |
実行使用メモリ | 43,264 KB |
最終ジャッジ日時 | 2024-11-28 18:21:37 |
合計ジャッジ時間 | 12,044 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 30 |
ソースコード
local n = io.read("*n")local edge = {}local edgecnt = {}local l_to_r = {}for i = 1, n doedge[i] = {}edgecnt[i] = 0l_to_r[i] = trueendlocal ea, eb = {}, {}for i = 1, n dolocal a, b = io.read("*n", "*n")ea[i], eb[i] = a, bedge[a][i] = trueedge[b][i] = trueedgecnt[a] = edgecnt[a] + 1edgecnt[b] = edgecnt[b] + 1endlocal tasks = {}for i = 1, n doif edgecnt[i] == 1 thentable.insert(tasks, i)endendlocal done = 0while done < #tasks dodone = done + 1local src = tasks[done]local ei = next(edge[src])local dst = ea[ei] + eb[ei] - srcif eb[ei] == src thenl_to_r[ei] = falseendedge[src][ei] = niledge[dst][ei] = niledgecnt[src] = 0edgecnt[dst] = edgecnt[dst] - 1if edgecnt[dst] == 1 thentable.insert(tasks, dst)endendlocal spos = 0for i = 1, n doif edgecnt[i] == 2 thenspos = ibreakendendtasks = {}dolocal ei = next(edge[spos])local dst = ea[ei] + eb[ei] - sposedge[spos][ei] = nilif ea[ei] == spos thenl_to_r[ei] = falseendtable.insert(tasks, spos)enddone = 0while done < #tasks dodone = done + 1local src = tasks[done]local ei = next(edge[src])if not ei then break endlocal dst = ea[ei] + eb[ei] - srcif eb[ei] == src thenl_to_r[ei] = falseendedge[src][ei] = niledge[dst][ei] = niltable.insert(tasks, dst)endfor i = 1, n doprint(l_to_r[i] and "->" or "<-")end