제출 #750237

#제출 시각아이디문제언어결과실행 시간메모리
750237MuntherCarrotAwesome Arrowland Adventure (eJOI19_adventure)C++14
50 / 100
49 ms102400 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long // #define int long long #define endl '\n' #define all(x) x.begin(),x.end() const ll MOD = 1e9 + 7, SZ = 1e5 + 10, INF = 1e18; vector<vector<int>> vtx(SZ); int cst[4][4] = { {0, 1, 2, 3}, //N {3, 0, 1, 2}, //E {2, 3, 0, 1}, //S {1, 2, 3, 0} //W // N E S W }; int32_t main(){ // ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; char arr[n][m]; for(auto &I : arr){ for(char &i : I) cin >> i; } int nds[n][m]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++) nds[i][j] = i * m + j; } int mtx[n*m][n*m]; memset(mtx, -1, sizeof mtx); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ int y = nds[i][j]; int d; if(arr[i][j] == 'X') d = -1; if(arr[i][j] == 'N') d = 0; if(arr[i][j] == 'E') d = 1; if(arr[i][j] == 'S') d = 2; if(arr[i][j] == 'W') d = 3; if(j > 0) mtx[y][nds[i][j - 1]] = (d == -1 ? -1 : cst[d][3]); if(i > 0) mtx[y][nds[i - 1][j]] = (d == -1 ? -1 : cst[d][0]); if(j + 1 < m) mtx[y][nds[i][j + 1]] = (d == -1 ? -1 : cst[d][1]); if(i + 1 < n) mtx[y][nds[i + 1][j]] = (d == -1 ? -1 : cst[d][2]); } } // for(int i=0;i<n * m;i++){ // for(int j=0;j<n * m;j++) // if(mtx[i][j] != -1)cout << mtx[i][j] << ' '; // cout << endl; // } priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q; q.push({0, 0}); vector<int> ans(n * m, INT_MAX); bool vis[n * m] = {}; while(!q.empty()){ auto u = q.top(); q.pop(); if(vis[u.second]) continue; // cout << u. first << ' ' << u.second << endl; vis[u.second] = 1; ans[u.second] = u.first; for(int i=0;i<n * m;i++){ if(mtx[u.second][i] == -1) continue; // cout << i << ' '<< mtx[u.second][i] + u.first << endl; q.push({mtx[u.second][i] + u.first, i}); } } // for(int i=0;i<m*n;i++) // cout << ans[i] << ' '; cout << (ans[n * m - 1] == INT_MAX ? -1 : ans[n * m - 1]); return 0; }

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

adventure.cpp: In function 'int32_t main()':
adventure.cpp:49:50: warning: 'd' may be used uninitialized in this function [-Wmaybe-uninitialized]
   49 |                 mtx[y][nds[i - 1][j]] = (d == -1 ? -1 : cst[d][0]);
      |                                         ~~~~~~~~~^~~~~~~~~~~~~~~~~
#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...