Submission #976732

#TimeUsernameProblemLanguageResultExecution timeMemory
976732vjudge1Awesome Arrowland Adventure (eJOI19_adventure)C++17
100 / 100
62 ms20928 KiB
#include<bits/stdc++.h> #define ll long long #define endl "\n" #define fi first #define se second #define pb push_back #define pll pair<long long, long long> using namespace std; ll mv_x[] = {-1,0,1,0}; ll mv_y[] = {0,1,0,-1}; map<char,ll> mp; ll n,m; ll arr[1000][1000]; ll visited[1000][1000]; void dijkstra(){ using plll = pair<ll,pll>; priority_queue<plll, vector<plll>, greater<plll>> pq; pq.push({0,{1,1}}); while(!pq.empty()){ ll cost = pq.top().fi; ll x = pq.top().se.fi; ll y = pq.top().se.se; pq.pop(); if(visited[x][y]!=-1) continue; visited[x][y] = cost; if(x==n&&y==m) break; if(arr[x][y]==-1) continue; for(int i=0;i<=3;i++){ ll idx = (arr[x][y] + i)%4; ll new_x = x + mv_x[idx]; ll new_y = y + mv_y[idx]; if(visited[new_x][new_y]!=-1) continue; if(new_x<1||new_x>n) continue; if(new_y<1||new_y>m) continue; pq.push({cost+i,{new_x,new_y}}); } } } void solve(){ cin >> n >> m; mp['N'] = 0; mp['E'] = 1; mp['S'] = 2; mp['W'] = 3; mp['X'] = -1; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ char c; cin >> c; arr[i][j] = mp[c]; } } memset(visited,-1,sizeof visited); dijkstra(); // for(int i=1;i<=n;i++){ // for(int j=1;j<=m;j++){ // cout << visited[i][j] << ' '; // } // cout << endl; // } cout << visited[n][m] << endl; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tc = 1; // cin >> tc; while(tc--){ solve(); } }
#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...