제출 #976831

#제출 시각아이디문제언어결과실행 시간메모리
976831vjudge1Awesome Arrowland Adventure (eJOI19_adventure)C++17
100 / 100
85 ms10036 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define fi first #define sec second #define pii pair<ll,ll> const ll N = 1e5 + 5; const ll MOD = 1e9 + 7; char grid[505][505]; ll dist[505][505]; ll dx[] = {-1,0,1,0}; ll dy[] = {0,1,0,-1}; ll cost(char cur, ll i){ if(cur == 'N'){ return i; } if(cur == 'S'){ if(i == 2) return 0; if(i == 3) return 1; if(i == 0) return 2; if(i == 1) return 3; } if(cur == 'W'){ if(i == 3) return 0; if(i == 0) return 1; if(i == 1) return 2; if(i == 2) return 3; } if(cur == 'E'){ if(i == 1) return 0; if(i == 2) return 1; if(i == 3) return 2; if(i == 0) return 3; } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); ll tc = 1; // cin >> tc; while(tc--){ ll n,m; cin >> n >> m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin >> grid[i][j]; dist[i][j] = 1e18; } } priority_queue<pair<ll,pii>,vector<pair<ll,pii>>,greater<pair<ll,pii>>> pq; pq.push({0, {1,1}}); dist[1][1] = 0; while(!pq.empty()){ auto x = pq.top(); pq.pop(); if(dist[x.sec.fi][x.sec.sec] < x.fi || grid[x.sec.fi][x.sec.sec] == 'X') continue; for(int i=0;i<4;i++){ ll newi = x.sec.fi + dx[i], newj = x.sec.sec + dy[i]; ll now = cost(grid[x.sec.fi][x.sec.sec], i); if(newi < 1 || newj < 1 || newi > n || newj > m || dist[newi][newj] <= dist[x.sec.fi][x.sec.sec] + now){ continue; } dist[newi][newj] = dist[x.sec.fi][x.sec.sec] + now; pq.push({dist[newi][newj], {newi, newj}}); } } cout << (dist[n][m] == 1e18 ? -1 : dist[n][m]) << endl; } }

컴파일 시 표준 에러 (stderr) 메시지

adventure.cpp: In function 'long long int cost(char, long long int)':
adventure.cpp:38:1: warning: control reaches end of non-void function [-Wreturn-type]
   38 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...