結果
問題 |
No.1647 Travel in Mitaru city 2
|
ユーザー |
|
提出日時 | 2021-07-28 13:45:32 |
言語 | PyPy3 (7.3.15) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,049 bytes |
コンパイル時間 | 371 ms |
コンパイル使用メモリ | 82,692 KB |
実行使用メモリ | 848,336 KB |
最終ジャッジ日時 | 2024-10-03 15:50:10 |
合計ジャッジ時間 | 4,806 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | MLE * 1 -- * 47 |
ソースコード
import sys sys.setrecursionlimit(1000000) h, w, n = map(int, input().split()) edge = [[] for _ in range(h + w)] for idx in range(1, n+1): x, y = [int(i) - 1 for i in input().split()] y = y + h edge[x].append((y, idx)) edge[y].append((x, idx)) visited = [False] * (h + w) parent = [None] * (h + w) def output(start): t = [] i = start while True: i, site = parent[i] t.append(site) if i == start: break if i >= h: t = t[1:] + t[:1] print(len(t)) print(*t) def dfs(start): stack = [(-1, start)] while stack: prev, i = stack[-1] stack.pop() if visited[i]: return i visited[i] = True for j, idx in edge[i]: if j == prev: continue stack.append((i, j)) parent[j] = (i, idx) return -1 for i in range(h + w): if not visited[i]: result = dfs(i) if result != -1: output(result) exit() print(-1)