提交时间:2024-03-25 22:39:47

运行 ID: 139810

#include <bits/stdc++.h> using namespace std; int n, m; const int N = 101; int a[N][N], vis[N][N], dx[] = {0, 0, 1, -1, 1, 1, -1, -1}, dy[] = {1, -1, 0, 0, 1, -1, 1, -1}; vector <pair <int, int>> road(100000); void dfs(int i, int j, int now) { road[now] = {i, j}; vis[i][j] = true; if (i == n and j == m) { for (int i = 1; i <= now; i++) cout << road[i].first << " " << road[i].second << endl; exit(0); } for (int e = 0; e < 8; e++) { int s = i + dx[e], t = j + dy[e]; if (s <= 0 or t <= 0 or s > n or t > n or vis[s][t] or a[s][t]) continue; dfs(s, t, now + 1); } } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) cin >> a[i][j]; dfs(1, 1, 1); cout << -1 << endl; return 0; }