제출 #440986

#제출 시각아이디문제언어결과실행 시간메모리
440986MrDebooAwesome Arrowland Adventure (eJOI19_adventure)C++17
100 / 100
87 ms4952 KiB
#include <bits/stdc++.h> #define mod 1000000007 #define endl '\n' using namespace std; int idk(char a,char b){ if(a=='N'){ if(b=='N')return 0; if(b=='E')return 1; if(b=='S')return 2; if(b=='W')return 3; } if(a=='E'){ if(b=='N')return 3; if(b=='E')return 0; if(b=='S')return 1; if(b=='W')return 2; } if(a=='S'){ if(b=='N')return 2; if(b=='E')return 3; if(b=='S')return 0; if(b=='W')return 1; } if(a=='W'){ if(b=='N')return 1; if(b=='E')return 2; if(b=='S')return 3; if(b=='W')return 0; } } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,m; cin>>n>>m; char arr[n][m]; for(int i=0;i<n;i++){ for(int w=0;w<m;w++){ cin>>arr[i][w]; } } priority_queue<pair<long long,pair<int,int>>,vector<pair<long long,pair<int,int>>>,greater<pair<long long,pair<int,int>>>>pq; bool bl[n][m]; memset(bl,false,sizeof(bl)); pq.push({0,{0,0}}); while(pq.size()){ long long v=pq.top().first; int i=pq.top().second.first; int w=pq.top().second.second; if(i==n-1&&w==m-1){cout<<v;return 0;} pq.pop(); if(bl[i][w]||arr[i][w]=='X')continue; bl[i][w]=true; if(i>0&&!bl[i-1][w]/*&&(arr[i-1][w]!='X'||(i-1==n-1&&w==m-1))*/)pq.push({v+idk(arr[i][w],'N'),{i-1,w}}); if(i<n-1&&!bl[i+1][w]/*&&(arr[i+1][w]!='X'||(i+1==n-1&&w==m-1))*/)pq.push({v+idk(arr[i][w],'S'),{i+1,w}}); if(w>0&&!bl[i][w-1]/*&&(arr[i][w-1]!='X'||(i==n-1&&w-1==m-1))*/)pq.push({v+idk(arr[i][w],'W'),{i,w-1}}); if(w<m-1&&!bl[i][w+1]/*&&(arr[i][w+1]!='X'||(i==n-1&&w+1==m-1))*/)pq.push({v+idk(arr[i][w],'E'),{i,w+1}}); } cout<<-1; } //1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 //0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 // //1 3 2 4

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

adventure.cpp: In function 'int idk(char, char)':
adventure.cpp:30:1: warning: control reaches end of non-void function [-Wreturn-type]
   30 | }
      | ^
#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...