Submission #226699

#TimeUsernameProblemLanguageResultExecution timeMemory
226699PajarajaAwesome Arrowland Adventure (eJOI19_adventure)C++17
100 / 100
268 ms14932 KiB
#include <bits/stdc++.h> #define MAXN 507 using namespace std; int ind[MAXN][MAXN],dist[MAXN][MAXN],dx[4]={0,1,0,-1},dy[4]={-1,0,1,0},n,m; void dijkstra() { for(int i=0;i<n;i++) for(int j=0;j<m;j++) dist[i][j]=-1; priority_queue<pair<int,pair<int,int>>,vector<pair<int,pair<int,int>> >, greater<pair<int,pair<int,int> > > > pq; pq.push(make_pair(0,make_pair(0,0))); while(!pq.empty()) { int x=pq.top().second.first,y=pq.top().second.second,c=pq.top().first; pq.pop(); if(x<0 || x>=m || y<0 || y>=n || dist[y][x]!=-1) continue; dist[y][x]=c; if(ind[y][x]==-1) continue; for(int i=0;i<4;i++) pq.push(make_pair(c+i,make_pair(x+dx[(ind[y][x]+i)%4],y+dy[(ind[y][x]+i)%4]))); } } int main() { cin>>n>>m; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { char c; cin>>c; if(c=='N') ind[i][j]=0; if(c=='E') ind[i][j]=1; if(c=='S') ind[i][j]=2; if(c=='W') ind[i][j]=3; if(c=='X') ind[i][j]=-1; } dijkstra(); cout<<dist[n-1][m-1]; }
#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...