提出 #53420373
ソースコード 拡げる
#include <bits/stdc++.h>
#include <queue>
#define ll long long
#define ull unsigned long long
#define pa first
#define pb second
#define endl '\n'
#define vint vector<int>
#define vlong vector<ll>
#define pii pair<int, int>
#define rep(i, a, b) for (int i = int(a); i < int(b); i++)
#define rng(i, a, b) for (int i = int(a); i <= int(b); i++)
#define per(i, a, b) for (int i = int(b - 1); i >= int(a); i--)
#define gnr(i, a, b) for (int i = int(b); i >= int(a); i--)
using namespace std;
#define ATC
#ifdef ATC
#include <atcoder/all>
using namespace atcoder;
#endif
#ifdef MT
void solve()
{
}
#endif
const int N = 510, INF = 0x3f3f3f3f;
char mp[N][N];
int n;
struct Vec {
int i, j;
Vec operator+(const Vec& rhs) const
{
return { i + rhs.i, j + rhs.j };
}
} dir[4] = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } };
bool isvaild(int i, int j)
{
return i && j && i <= n && j <= n;
}
bool isvaild(Vec& v)
{
return isvaild(v.i, v.j);
}
struct Route {
Vec pos;
int w;
bool operator<(const Route& rhs) const
{
return w > rhs.w;
}
};
#define cast(arr, vec) arr[(vec.i)][(vec.j)]
int dijkstra(Vec s, Vec t, char c)
{
vector<vint> dp(n + 1, vint(n + 1, INF));
priority_queue<Route> pq;
cast(dp, s) = 0;
pq.push({ s, 0 });
while (!pq.empty()) {
auto top = pq.top();
pq.pop();
for (auto d : dir) {
Vec cur = top.pos + d;
if (isvaild(cur) && cast(dp, cur) > top.w + (c != cast(mp, cur))) {
cast(dp, cur) = top.w + (c != cast(mp, cur));
pq.push({ cur, cast(dp, cur) });
}
}
}
return cast(dp, t);
}
int main(void)
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
rng(i, 1, n)
{
rng(j, 1, n)
{
cin >> mp[i][j];
}
}
cout << dijkstra({ 1, 1 }, { n, n }, 'R') + dijkstra({ 1, n }, { n, 1 }, 'B');
#ifdef MT
int t;
cin >> t;
for (int i = 0; i < t; i++)
solve();
#endif
}
提出情報
| 提出日時 |
|
| 問題 |
C - Routing |
| ユーザ |
L1bra |
| 言語 |
C++ 20 (gcc 12.2) |
| 得点 |
500 |
| コード長 |
2153 Byte |
| 結果 |
AC |
| 実行時間 |
42 ms |
| メモリ |
6072 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
500 / 500 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt |
| All |
in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| in01.txt |
AC |
1 ms |
3444 KiB |
| in02.txt |
AC |
1 ms |
3456 KiB |
| in03.txt |
AC |
1 ms |
3560 KiB |
| in04.txt |
AC |
2 ms |
3620 KiB |
| in05.txt |
AC |
6 ms |
3772 KiB |
| in06.txt |
AC |
32 ms |
5992 KiB |
| in07.txt |
AC |
35 ms |
5992 KiB |
| in08.txt |
AC |
37 ms |
5992 KiB |
| in09.txt |
AC |
42 ms |
5988 KiB |
| in10.txt |
AC |
38 ms |
4648 KiB |
| in11.txt |
AC |
42 ms |
6004 KiB |
| in12.txt |
AC |
37 ms |
5292 KiB |
| in13.txt |
AC |
34 ms |
5912 KiB |
| in14.txt |
AC |
31 ms |
6044 KiB |
| in15.txt |
AC |
31 ms |
4532 KiB |
| in16.txt |
AC |
31 ms |
4368 KiB |
| in17.txt |
AC |
32 ms |
4504 KiB |
| in18.txt |
AC |
32 ms |
4556 KiB |
| in19.txt |
AC |
31 ms |
5256 KiB |
| in20.txt |
AC |
33 ms |
5280 KiB |
| in21.txt |
AC |
30 ms |
5248 KiB |
| in22.txt |
AC |
32 ms |
5284 KiB |
| in23.txt |
AC |
34 ms |
5968 KiB |
| in24.txt |
AC |
35 ms |
5992 KiB |
| in25.txt |
AC |
33 ms |
6016 KiB |
| in26.txt |
AC |
35 ms |
5972 KiB |
| in27.txt |
AC |
34 ms |
6028 KiB |
| in28.txt |
AC |
35 ms |
6072 KiB |
| in29.txt |
AC |
34 ms |
5972 KiB |
| in30.txt |
AC |
35 ms |
5996 KiB |
| in31.txt |
AC |
24 ms |
4440 KiB |
| in32.txt |
AC |
27 ms |
4480 KiB |
| in33.txt |
AC |
28 ms |
4296 KiB |
| in34.txt |
AC |
27 ms |
4392 KiB |
| in35.txt |
AC |
34 ms |
5332 KiB |
| in36.txt |
AC |
34 ms |
5424 KiB |
| sample-01.txt |
AC |
1 ms |
3508 KiB |
| sample-02.txt |
AC |
1 ms |
3336 KiB |
| sample-03.txt |
AC |
1 ms |
3556 KiB |
| sample-04.txt |
AC |
1 ms |
3440 KiB |