結果
問題 | No.1638 Robot Maze |
ユーザー |
![]() |
提出日時 | 2021-08-08 11:41:49 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 2,267 bytes |
コンパイル時間 | 2,828 ms |
コンパイル使用メモリ | 164,884 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-19 07:16:28 |
合計ジャッジ時間 | 4,199 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 49 |
コンパイルメッセージ
main.cpp: In function 'void dijkstra(int, int)': main.cpp:57:10: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17' [-Wc++17-extensions] 57 | auto [cost, p] = que.top(); que.pop(); | ^
ソースコード
#include <iostream>#include <iomanip>#include <cstdio>#include <queue>#include <cstring>#include <vector>#include <map>#include <algorithm>#include <cctype>#include <cmath>#include <bitset>#include <set>#include <deque>#include <stack>#include <atcoder/all>#include <array>using namespace std;#define rep(i,n) for(int i = 0; i < (int)(n); ++i)#define rrep(i,n) for(int i = 1; i <= (n); ++i)#define drep(i,n) for(int i = (n)-1; i >= 0; --i)#define srep(i,s,t) for (int i = s; i < (t); ++i)#define dsrep(i,t,s) for(int i = (t)-1; i >= (s); --i)#define rng(a) a.begin(),a.end()#define rrng(a) a.rbegin(),a.rend()#define isin(x,l,r) ((l) <= (x) && (x) < (r))// int dx4[4]={1,0,-1,0};// int dy4[4]={0,-1,0,1};int dx4[4]={-1,1,0,0};int dy4[4]={0,0,1,-1};using ll = long long;using uint = unsigned;using ull = unsigned long long;using P = pair<int,int>;const ll LINF = 1001002003004005006ll;const int INF = 1001001001;// const ll mod = 998244353;const ll mod = 1e9 + 7;///////////////////////////////////////////ll h, w, k, pp, sx, sy, gx, gy;char c[105][105];ll dist[105][105];using PP = pair<ll, P>;ll cost_vec[4];bool grid_inside(int y, int x) {if(0 <= y && y < h && 0 <= x && x < w) return true;else return false;}void dijkstra(int sx, int sy) {priority_queue<PP, vector<PP>, greater<PP>> que;dist[sx][sy] = 0LL;que.push(PP(0LL, P(sx, sy)));while (!que.empty()) {auto [cost, p] = que.top(); que.pop();if(dist[p.first][p.second] < cost) continue;rep(i, 4) {int nx = dx4[i] + p.first, ny = dy4[i] + p.second;if(grid_inside(nx, ny) && (c[nx][ny] == '.' || c[nx][ny] == '@')) {ll tcost = dist[p.first][p.second] + cost_vec[i];if(c[nx][ny] == '@') tcost += pp;if(dist[nx][ny] > tcost) {dist[nx][ny] = tcost;que.push(PP(dist[nx][ny], P(nx, ny)));}}}}}int main() {cin.tie(0);ios::sync_with_stdio(false);cin >> h >> w >> cost_vec[0] >> cost_vec[1] >> cost_vec[2] >> cost_vec[3] >> k >> pp >> sx >> sy >> gx >> gy;rep(i, h) rep(j, w) cin >> c[i][j];rep(i, h) rep(j, w) dist[i][j] = LINF;sx--; sy--; gx--; gy--;dijkstra(sx, sy);cout << (dist[gx][gy] <= k ? "Yes" : "No") << endl;}