Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <algorithm>
- #define Dim 25
- using namespace std;
- int n, m, xi, yi, H[Dim][Dim], i, j, kmax, A[Dim][Dim];
- int dl[4] = {-1, 0, 1, 0};
- int dc[4] = {0, 1, 0, -1};
- bool sol(int x, int y)
- {
- if(x == 1 || x == n || y == 1 || y == m)
- return 1;
- return 0;
- }
- void backplan(int x, int y, int k)
- {
- int i, j, xx, yy;
- if(sol(x, y))
- {
- kmax = max(kmax, k - 1);
- return;
- }
- else
- for(i = 0; i < 4; ++ i)
- {
- xx = x + dl[i];
- yy = y + dc[i];
- if(!A[xx][yy] && H[xx][yy] < H[x][y])
- {
- A[xx][yy] = k;
- backplan(xx, yy, k + 1);
- A[xx][yy] = 0;
- }
- }
- }
- int main()
- {
- freopen("bila.in", "r", stdin);
- freopen("bila.out", "w", stdout);
- scanf("%d %d", &n, &m);
- for(i = 1; i <= n; ++ i)
- for(j = 1; j <= m; ++ j)
- scanf("%d", &H[i][j]);
- scanf("%d %d", &xi, &yi);
- for(i = 0; i <= n + 1; ++ i)
- A[i][0] = A[i][m + 1] = -1;
- for(i = 0; i <= m + 1; ++ i)
- A[0][i] = A[n + 1][i] = -1;
- A[xi][yi] = 1;
- backplan(xi, yi, 2);
- printf("%d\n", kmax);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement