Please sign in first.
Submission #30708736
Source Code Expand
// #include <atcoder/all>
// using namespace atcoder;
// using mint = modint998244353;
// using mint = modint1000000007;
#include <bits/stdc++.h>
#include <queue>
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define rep(i,n) for (int i = 0; i < (n); ++i)
#define rep2(i,k,n) for (int i = (k); i < (n); ++i)
using namespace std;
using ll = long long;
// using P = pair<ll,ll>;
using P = pair<int,int>;
using vint = vector<int>;
using vll = vector<ll>;
using vvint = vector<vector<int>>;
using vvll = vector<vector<ll>>;
// const ll INF = (ll)2e18+9;
const int INF = (int)2e9+7;
// const ll MOD = (ll)1e9+9;
template<typename T>
void chmin(T &a, T b) { a = min(a, b); }
template<typename T>
void chmax(T &a, T b) { a = max(a, b); }
template<typename T>
void print(vector<T> v) {
int n = v.size();
rep(i,n) {
if (i == 0) cout << v[i];
else cout << ' ' << v[i];
}
cout << endl;
}
int di[] = {-1, -1, 1, 1};
int dj[] = {-1, 1, -1, 1};
struct Point {
int i, j, dir, cost;
};
bool operator>(const Point &a, const Point &b) {
return a.cost > b.cost;
}
void solve() {
int n;
cin >> n;
int ax, ay, bx, by;
cin >> ax >> ay >> bx >> by;
ax--, ay--, bx--; by--;
vector<string> board(n);
rep(i,n) cin >> board[i];
vvint dist(n, vint(n, INF));
dist[ax][ay] = 0;
priority_queue<Point, vector<Point>, greater<Point>> pq;
pq.push({ax, ay, 4, 0});
vector<vvint> done(n, vvint(n, vint(5)));
while (pq.size()) {
auto [x, y, dir, cost] = pq.top();
pq.pop();
if (done[x][y][dir]) continue;
done[x][y][dir] = 1;
rep(d,4) {
int nx = x + di[d], ny = y + dj[d];
if (nx < 0 || nx >= n || ny < 0 || ny >= n) continue;
if (board[nx][ny] == '#') continue;
int inc = (dir == d) ? 0 : 1;
if (dist[nx][ny] >= cost+inc) {
dist[nx][ny] = cost + inc;
pq.push({nx, ny, d, cost+inc});
}
}
}
if (dist[bx][by] == INF) cout << -1 << endl;
else cout << dist[bx][by] << endl;
}
int main() {
solve();
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Bishop 2 |
| User | goropikari |
| Language | C++ (GCC 9.2.1) |
| Score | 500 |
| Code Size | 2274 Byte |
| Status | AC |
| Exec Time | 1740 ms |
| Memory | 171192 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 5 ms | 3488 KiB |
| sample_02.txt | AC | 5 ms | 3616 KiB |
| sample_03.txt | AC | 2 ms | 3504 KiB |
| test_01.txt | AC | 2 ms | 3592 KiB |
| test_02.txt | AC | 2 ms | 3420 KiB |
| test_03.txt | AC | 2 ms | 3592 KiB |
| test_04.txt | AC | 3 ms | 3492 KiB |
| test_05.txt | AC | 2 ms | 3496 KiB |
| test_06.txt | AC | 480 ms | 107540 KiB |
| test_07.txt | AC | 266 ms | 71684 KiB |
| test_08.txt | AC | 52 ms | 17452 KiB |
| test_09.txt | AC | 5 ms | 4404 KiB |
| test_10.txt | AC | 15 ms | 9520 KiB |
| test_11.txt | AC | 1017 ms | 150732 KiB |
| test_12.txt | AC | 204 ms | 47312 KiB |
| test_13.txt | AC | 10 ms | 5264 KiB |
| test_14.txt | AC | 13 ms | 6260 KiB |
| test_15.txt | AC | 32 ms | 14236 KiB |
| test_16.txt | AC | 5 ms | 4044 KiB |
| test_17.txt | AC | 148 ms | 34220 KiB |
| test_18.txt | AC | 108 ms | 37612 KiB |
| test_19.txt | AC | 6 ms | 3836 KiB |
| test_20.txt | AC | 107 ms | 74484 KiB |
| test_21.txt | AC | 36 ms | 10276 KiB |
| test_22.txt | AC | 235 ms | 60764 KiB |
| test_23.txt | AC | 33 ms | 11740 KiB |
| test_24.txt | AC | 26 ms | 14268 KiB |
| test_25.txt | AC | 13 ms | 7688 KiB |
| test_26.txt | AC | 627 ms | 108136 KiB |
| test_27.txt | AC | 408 ms | 112104 KiB |
| test_28.txt | AC | 26 ms | 11092 KiB |
| test_29.txt | AC | 156 ms | 109224 KiB |
| test_30.txt | AC | 194 ms | 138016 KiB |
| test_31.txt | AC | 908 ms | 146572 KiB |
| test_32.txt | AC | 529 ms | 138784 KiB |
| test_33.txt | AC | 464 ms | 138584 KiB |
| test_34.txt | AC | 238 ms | 138100 KiB |
| test_35.txt | AC | 194 ms | 138044 KiB |
| test_36.txt | AC | 671 ms | 140172 KiB |
| test_37.txt | AC | 638 ms | 139236 KiB |
| test_38.txt | AC | 456 ms | 138348 KiB |
| test_39.txt | AC | 191 ms | 138052 KiB |
| test_40.txt | AC | 196 ms | 137992 KiB |
| test_41.txt | AC | 627 ms | 139052 KiB |
| test_42.txt | AC | 690 ms | 140168 KiB |
| test_43.txt | AC | 433 ms | 138312 KiB |
| test_44.txt | AC | 192 ms | 138088 KiB |
| test_45.txt | AC | 1356 ms | 171016 KiB |
| test_46.txt | AC | 1164 ms | 154584 KiB |
| test_47.txt | AC | 1292 ms | 171012 KiB |
| test_48.txt | AC | 1487 ms | 171016 KiB |
| test_49.txt | AC | 1207 ms | 154580 KiB |
| test_50.txt | AC | 1487 ms | 171016 KiB |
| test_51.txt | AC | 1724 ms | 171124 KiB |
| test_52.txt | AC | 1610 ms | 171012 KiB |
| test_53.txt | AC | 1740 ms | 171192 KiB |
| test_54.txt | AC | 1158 ms | 170948 KiB |
| test_55.txt | AC | 1150 ms | 171108 KiB |
| test_56.txt | AC | 1157 ms | 171124 KiB |
| test_57.txt | AC | 206 ms | 138056 KiB |