제출 #976666

#제출 시각아이디문제언어결과실행 시간메모리
976666vjudge1Awesome Arrowland Adventure (eJOI19_adventure)C++17
100 / 100
62 ms6420 KiB
#include <bits/stdc++.h> #define pii pair<int, int> #define ppii pair<int, pair<int, int>> #define fr first #define sc second using namespace std; int main() { int ax[4] = {-1, 0, 1, 0}; int ay[4] = {0, 1, 0, -1}; char cod[4] = {'N', 'E', 'S', 'W'}; int n, m; cin >> n >> m; string s[n]; for (int i=0;i<n;i++) { cin >> s[i]; } int dp[n][m]; memset(dp, -1, sizeof(dp)); priority_queue<ppii, vector<ppii>, greater<ppii>>pq; pq.push({0, {0, 0}}); while (!pq.empty()) { int nilai = pq.top().fr; int x = pq.top().sc.fr; int y = pq.top().sc.sc; pq.pop(); if (x==n-1 && y==m-1) { cout << nilai << endl; return 0; } if (dp[x][y] == -1) { dp[x][y] = nilai; if (s[x][y] == 'X') continue; for (int i=0;i<4;i++) { if (x+ax[i]>=0&&x+ax[i]<n&&y+ay[i]>=0&&y+ay[i]<m && dp[x+ax[i]][y+ay[i]]==-1) { int jarak = 0, j; for (int ii=0;ii<4;ii++) { if (cod[ii]==s[x][y]){ j=ii; break; } } while (cod[j]!=cod[i]) { jarak++; j++; j%=4; } pq.push({nilai+jarak, {x+ax[i], y+ay[i]}}); } } } } cout << dp[n-1][m-1] << endl; return 0; }

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

adventure.cpp: In function 'int main()':
adventure.cpp:44:26: warning: 'j' may be used uninitialized in this function [-Wmaybe-uninitialized]
   44 |                         j++; j%=4;
      |                         ~^~
#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...