結果
問題 |
No.1576 織姫と彦星
|
ユーザー |
👑 |
提出日時 | 2021-06-30 20:17:20 |
言語 | Lua (LuaJit 2.1.1734355927) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 756 bytes |
コンパイル時間 | 167 ms |
コンパイル使用メモリ | 7,072 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-27 06:23:07 |
合計ジャッジ時間 | 1,992 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 54 |
ソースコード
local bxor = bit.bxor local f = {} do local mul = 1 while true do table.insert(f, mul) mul = mul * 2 if 1000000007 < mul then break end end end local n = io.read("*n") local a = {} a[1], a[2] = io.read("*n", "*n") for i = 3, n + 2 do a[i] = io.read("*n") end n = n + 2 local len = {} local ainv = {} for i = 1, n do len[i] = -1 ainv[a[i]] = i end len[1] = 0 local tasks = {1} local done = 0 while done < #tasks do done = done + 1 local src = tasks[done] for i = 1, #f do local d = bxor(a[src], f[i]) local dst = ainv[d] if dst and len[dst] < 0 then if dst == 2 then print(len[src]) os.exit() end len[dst] = len[src] + 1 table.insert(tasks, dst) end end end print(-1)