Submission #467830

#TimeUsernameProblemLanguageResultExecution timeMemory
467830jurgisAwesome Arrowland Adventure (eJOI19_adventure)C++14
34 / 100
1 ms460 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; #define pii pair<int, int> #define fi first #define se second #define p push #define pb push_back #define F(end) for(int i=0; i<end; i++) #define ll long long int m, n; const int inf = 1e9; bool vis[501]; ll dist[501]; vector<pii> adj[501]; priority_queue<pii,vector<pii>, greater<pii>> q; int pirmine[501]; void dijkstra(int x){ for(int i=0; i<m*n; i++){ vis[i] = false; dist[i] = inf; pirmine[i] =-1; } dist[x] = 0; q.p({dist[x], x}); while(!q.empty()){ int v = q.top().se; q.pop(); if(vis[v])continue; vis[v] = true; for(auto u: adj[v]){ int j = u.fi; int w = u.se; if(dist[v] +w < dist[j]){ dist[j] = dist[v] +w; pirmine[j] = v; q.p({dist[j], j}); } } } } int main() { cin>>m>>n; string s[m]; F(m)cin>>s[i]; F(m){ for(int a=0; a<n-1; a++){ if(s[i][a] == 'E')adj[a + i*n].pb({a+i*n +1, 0}); if(s[i][a] == 'N')adj[a + i*n].pb({a+i*n +1, 1}); if(s[i][a] == 'W')adj[a + i*n].pb({a+i*n +1, 2}); if(s[i][a] == 'S')adj[a + i*n].pb({a+i*n +1, 3}); } } F(m){ for(int a=1; a<n; a++){ if(s[i][a] == 'W')adj[a + i*n].pb({a+i*n -1, 0}); if(s[i][a] == 'S')adj[a + i*n].pb({a+i*n -1, 1}); if(s[i][a] == 'E')adj[a + i*n].pb({a+i*n -1, 2}); if(s[i][a] == 'N')adj[a + i*n].pb({a+i*n -1, 3}); } } F(n){ for(int a=0; a<m-1; a++){ if(s[a][i] == 'S')adj[a*n + i].pb({(a+1)*n + i, 0}); if(s[a][i] == 'E')adj[a*n + i].pb({(a+1)*n + i, 1}); if(s[a][i] == 'N')adj[a*n + i].pb({(a+1)*n + i, 2}); if(s[a][i] == 'W')adj[a*n + i].pb({(a+1)*n + i, 3}); } } F(n){ for(int a=1; a<m; a++){ if(s[a][i] == 'N')adj[a*n + i].pb({(a-1)*n + i, 0}); if(s[a][i] == 'W')adj[a*n + i].pb({(a-1)*n + i, 1}); if(s[a][i] == 'S')adj[a*n + i].pb({(a-1)*n + i, 2}); if(s[a][i] == 'E')adj[a*n + i].pb({(a-1)*n + i, 3}); } } dijkstra(0); int d = pirmine[n*m-1]; //cout<<d<<endl; //for(auto i: adj[0])cout<<i.fi<<i.se<<endl; //cout<<dist[4]; if(dist[n*m-1] == inf){ cout<<-1; } else{ cout<<dist[n*m-1]<<endl; } }

Compilation message (stderr)

adventure.cpp: In function 'int main()':
adventure.cpp:79:10: warning: unused variable 'd' [-Wunused-variable]
   79 |      int d = pirmine[n*m-1]; //cout<<d<<endl;
      |          ^
#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...