#include <bits/stdc++.h>
using namespace std;
#define FOR(i, x, y) for (int i = x; i < y; i++)
const int mx = 500;
int n, w, h, ans = mx*mx+1, dp[mx][mx][9][9], di[4] = {-1, 0, 1, 0}, dj[4] = {0, 1, 0, -1};
char grid[mx][mx]; pair<int, int> pos[4][mx][mx]; queue<pair<int, int>> trav[mx*mx+1];
pair<int, int> nextPos(int i, int j, int d){
int old = d; d = (d-(grid[i][j] == 'A')+(grid[i][j] == 'C')+4)%4;
int r = i+di[d], c = j+dj[d]; pos[old][i][j] = {-2, -2}; pair<int, int> ret;
if (!(r < h and r >= 0 and c < w and c >= 0 and grid[r][c] != 'x')) ret = {i, j};
else if (pos[d][r][c] != make_pair(-1, -1)) ret = pos[d][r][c];
else ret = nextPos(r, c, d);
return pos[old][i][j] = ret;
}
int main(){
cin >> n >> w >> h; memset(dp, 0x3f, sizeof(dp));
FOR(i, 0, h) FOR(j, 0, w) { cin >> grid[i][j]; if (isdigit(grid[i][j])) dp[i][j][grid[i][j]-'1'][grid[i][j]-'1'] = 0; }
FOR(i, 0, h) FOR(j, 0, w) FOR(k, 0, 4) pos[k][i][j] = {-1, -1};
FOR(i, 0, h) FOR(j, 0, w) FOR(k, 0, 4) if (grid[i][j] != 'x') nextPos(i, j, k);
FOR(l, 0, n){
FOR(x, 0, n-l){
int y = x+l;
FOR(i, 0, h) FOR(j, 0, w) if (grid[i][j] != 'x')
FOR(mid, x, y)
dp[i][j][x][y] = min(dp[i][j][x][y], dp[i][j][x][mid]+dp[i][j][mid+1][y]);
FOR(i, 0, h) FOR(j, 0, w) if (dp[i][j][x][y] < w*h) trav[dp[i][j][x][y]].push({i, j});
FOR(i, 0, w*h){
while (!trav[i].empty()){
int r, c; tie(r, c) = trav[i].front(); trav[i].pop();
FOR(d, 0, 4){
int r1, c1; tie(r1, c1) = pos[d][r][c];
if (r1 < 0 or c1 < 0) continue;
if (dp[r][c][x][y]+1 < dp[r1][c1][x][y]){
dp[r1][c1][x][y] = dp[r][c][x][y]+1;
trav[dp[r1][c1][x][y]].push({r1, c1});
}
}
}
}
}
}
FOR(i, 0, h) FOR(j, 0, w) ans = min(ans, dp[i][j][0][n-1]);
cout<<((ans > w*h) ? -1 : ans);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
86 ms |
163844 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
86 ms |
163844 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
86 ms |
163844 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
86 ms |
163844 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |