Untitled
user_5379400
plain_text
a year ago
1.3 kB
8
Indexable
#include<iostream> using namespace std; const int mod = 1e9 + 7; int n, m, sx, sy, ex, ey; int a[111][111]; bool vis[111][111]; void rs(){ for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) vis[i][j] = 0; } void dfs(int x, int y, int h){ vis[x][y] = true; if (y + 1 < m && !vis[x][y + 1] && a[x][y + 1]){ dfs(x, y + 1, h); } if (y - 1 >= 0 && !vis[x][y - 1] && a[x][y - 1]){ dfs(x, y - 1, h); } for (int nx = x - h; nx <= x + h; nx++){ if (nx >= 0 && nx < n && !vis[nx][y] && a[nx][y]){ dfs(nx, y, h); } } } void solve(int test){ cin >> n >> m; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ cin >> a[i][j]; if (a[i][j] == 2) sx = i, sy = j; if (a[i][j] == 3) ex = i, ey = j; } } int l = 0, r = 55, ans = -1; while(r >= l){ int mid = (l + r) / 2; rs(); dfs(sx, sy, mid); if (vis[ex][ey]){ ans = mid; r = mid - 1; } else l = mid + 1; } cout << "Case #" << test << '\n' << ans << '\n'; } int32_t main(){ // ios_base::sync_with_stdio(false), cin.tie(0); // freopen("file1.txt", "r", stdin); int t = 1; cin >> t; for (int i = 1; i <= t; i++) solve(i); }
Editor is loading...
Leave a Comment