Professional Documents
Culture Documents
#Include Bitsstdc
#Include Bitsstdc
#Include Bitsstdc
h>
using namespace std;
#define int ll
#define vt vector
#define TASK ""
#define pb push_back
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define f first
#define s second
#define MASK(i) (1ll << (i))
#define BIT(x, i) (((x) >> (i)) & 1ll)
#define builtin_popcount __builtin_popcountll
#define Times cerr <<"\nTime: "<<clock()/(double)1000<<" sec"
// cout << setprecision(0) << fixed << ans;
void setIO() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen(TASK".inp","r")) {
freopen(TASK".inp","r",stdin);
freopen(TASK".out","w",stdout);
}
}
/***------------------------- END ---------------------------***/
int n, m, a[N][N], dis[N][N], ans, k;
queue<ii> Q;
void bfs() {
Q.push(ii(1, 1));
dis[1][1] = 1;
while (sz(Q)) {
ii u = Q.front();
Q.pop();
if (u == ii(n, m)) {
ans = dis[n][m] - 1;
return;
}
if (!a[u.f][u.s]) {
FOR(i, 0, 3) {
int vx = u.f + dx[i], vy = u.s + dy[i];
add(u.f, u.s, vx, vy);
}
}
else {
FOR(i, 0, 3) {
FOR(j, 1, k) {
int vx = u.f + dx[i]*j, vy = u.s + dy[i]*j;
add(u.f, u.s, vx, vy);
if (a[vx][vy]) break;
}
}
}
}
}
void test_case() {
cin >> n >> m;
k = max(n, m);
bfs();
signed main() {
setIO();
int TC = 1;
while (TC--) {
test_case();
}
return 0;
}
/*** quoccuong ***/