結果
| 問題 |
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)