显示原始代码
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int n, a[4], b[4];
int dp[30][30][30][2][3][3];
int dfs(int xa, int ya, int xb, int yb, int za, int zb) {
int t = (xa ^ ya ^ xb ^ yb) & 1, &cur = dp[xa + ya - 2][xa - 1][n - xb][t][za][zb];
if (cur != inf)
return cur;
if (xa == n && ya == n && xb == 1 && yb == 1)
return cur = 0;
int tza, tzb, tx, ty;
if (t == 0) {
cur = -1;
tza = za, tzb = zb, tx = xa + 1, ty = ya;
if (tx <= n) {
if (xa == a[0] && ya == a[1] && tx == a[2] && ty == a[3])
tza = 0;
if (xa == b[0] && ya == b[1] && tx == b[2] && ty == b[3])
tzb = 0;
if (tza != 2 && abs(xb - tx) + abs(yb - ty) == 1)
cur = max(tza ? -1 : 1, cur);
else if (tzb != 2 && (xb == tx || yb == ty))
cur = max(tzb ? -1 : 1, cur);
else
cur = max(dfs(tx, ty, xb, yb, tza, tzb), cur);
}
tza = za, tzb = zb, tx = xa, ty = ya + 1;
if (ty <= n) {
if (xa == a[0] && ya == a[1] && tx == a[2] && ty == a[3])
tza = 0;
if (xa == b[0] && ya == b[1] && tx == b[2] && ty == b[3])
tzb = 0;
if (tza != 2 && abs(xb - tx) + abs(yb - ty) == 1)
cur = max(tza ? -1 : 1, cur);
else if (tzb != 2 && (xb == tx || yb == ty))
cur = max(tzb ? -1 : 1, cur);
else
cur = max(dfs(tx, ty, xb, yb, tza, tzb), cur);
}
} else {
cur = 1;
tza = za, tzb = zb, tx = xb - 1, ty = yb;
if (tx > 0) {
if (xb == a[2] && yb == a[3] && tx == a[0] && ty == a[1])
tza = 1;
if (xb == b[2] && yb == b[3] && tx == b[0] && ty == b[1])
tzb = 1;
if (tza != 2 && abs(xa - tx) + abs(ya - ty) == 1)
cur = min(tza ? -1 : 1, cur);
else if (tzb != 2 && (xa == tx || ya == ty))
cur = min(tzb ? -1 : 1, cur);
else
cur = min(dfs(xa, ya, tx, ty, tza, tzb), cur);
}
tza = za, tzb = zb, tx = xb, ty = yb - 1;
if (ty > 0) {
if (xb == a[2] && yb == a[3] && tx == a[0] && ty == a[1])
tza = 1;
if (xb == b[2] && yb == b[3] && tx == b[0] && ty == b[1])
tzb = 1;
if (tza != 2 && abs(xa - tx) + abs(ya - ty) == 1)
cur = min(tza ? -1 : 1, cur);
else if (tzb != 2 && (xa == tx || ya == ty))
cur = min(tzb ? -1 : 1, cur);
else
cur = min(dfs(xa, ya, tx, ty, tza, tzb), cur);
}
}
return cur;
}
void solve() {
cin >> n;
for (int i = 0; i < 4; i++) cin >> a[i];
if (a[0] > a[2])
swap(a[0], a[2]);
if (a[1] > a[3])
swap(a[1], a[3]);
for (int j = 0; j < 4; j++) cin >> b[j];
if (b[0] > b[2])
swap(b[0], b[2]);
if (b[1] > b[3])
swap(b[1], b[3]);
memset(dp, 0x3f, sizeof(dp));
int res = dfs(1, 1, n, n, 2, 2);
printf(res == 1 ? "Alice\n" : (res == -1 ? "Bob\n" : "0\n"));
}
int main() {
int T;
cin >> T;
while (T--) solve();
return 0;
}