Submission #750358

# Submission time Handle Problem Language Result Execution time Memory
750358 2023-05-29T12:31:09 Z MrM7md Awesome Arrowland Adventure (eJOI19_adventure) C++17
0 / 100
16 ms 24020 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define F first
#define S second
#define pb push_back
#define all(a) a.begin(),a.end()
const int N=1e6+500;
const int off=(1<<18);
const int MOD = 1e9+7;

vector<vector<int>>gr(N);
int val[N],vis[N];
map<pair<int,int>,int>mp;
void dij(int a){
   if(vis[a])return ;
   vis[a]=1;
   val[a]=0;
   priority_queue<pair<int,int>>pq;
   pq.push({0,a});
   while(!pq.empty()){
      int vl=pq.top().F,x=pq.top().S;
      pq.pop();
      if(vis[x])continue;
      vis[x]=1;
      // cout<<vl<<' '<<x<<endl;
      for(auto it:gr[x]){
         if(val[it]>val[x]+mp[{x,it}])val[it]=val[x]+mp[{x,it}];

         pq.push({val[it]*-1,it});
      }
   }
}
signed main(){
   ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
   int n,m;
   cin >> m >> n;
   char ch[m][n];
   for(int i=0;i<m;i++){
      for(int j=0;j<n;j++){
         cin >> ch[i][j];
      }
   }
   for(int i=0;i<m;i++){
      for(int j=0;j<n;j++){
         val[n*i+j]=INT_MAX;
         if(ch[i][j]=='X')vis[n*i+j]=1;
         if(i){
            gr[n*i+j].pb(n*(i-1)+j);
            if(ch[i][j]=='E')mp[{n*i+j,n*(i-1)+j}]=3;
            if(ch[i][j]=='W')mp[{n*i+j,n*(i-1)+j}]=1;
            if(ch[i][j]=='N')mp[{n*i+j,n*(i-1)+j}]=0;
            if(ch[i][j]=='S')mp[{n*i+j,n*(i-1)+j}]=2;
         }
         if(i<m-1){
            gr[n*i+j].pb(n*(i+1)+j);
            if(ch[i][j]=='E')mp[{n*i+j,n*(i+1)+j}]=1;
            if(ch[i][j]=='W')mp[{n*i+j,n*(i+1)+j}]=3;
            if(ch[i][j]=='N')mp[{n*i+j,n*(i+1)+j}]=2;
            if(ch[i][j]=='S')mp[{n*i+j,n*(i+1)+j}]=0;
         }
         if(j){
            gr[n*i+j].pb(n*i+j-1);
            if(ch[i][j]=='E')mp[{n*i+j,n*i+j-1}]=2;
            if(ch[i][j]=='W')mp[{n*i+j,n*i+j-1}]=0;
            if(ch[i][j]=='N')mp[{n*i+j,n*i+j-1}]=3;
            if(ch[i][j]=='S')mp[{n*i+j,n*i+j-1}]=1;
         }
         if(j<n-1){
            gr[n*i+j].pb(n*i+j+1);
            if(ch[i][j]=='E')mp[{n*i+j,n*i+j+1}]=0;
            if(ch[i][j]=='W')mp[{n*i+j,n*i+j+1}]=2;
            if(ch[i][j]=='N')mp[{n*i+j,n*i+j+1}]=1;
            if(ch[i][j]=='S')mp[{n*i+j,n*i+j+1}]=3;
         }
      }
   }
   dij(0);
   int lst=(n)*(m)-1;
   if(val[lst]==INT_MAX)val[lst]=-1;
   cout<<val[lst];

}

Compilation message

adventure.cpp: In function 'void dij(long long int)':
adventure.cpp:23:11: warning: unused variable 'vl' [-Wunused-variable]
   23 |       int vl=pq.top().F,x=pq.top().S;
      |           ^~
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23892 KB Output is correct
2 Correct 13 ms 23828 KB Output is correct
3 Incorrect 16 ms 23764 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23892 KB Output is correct
2 Correct 13 ms 23828 KB Output is correct
3 Incorrect 16 ms 23764 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 15 ms 23816 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 16 ms 24020 KB Output is correct
2 Incorrect 14 ms 23852 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23892 KB Output is correct
2 Correct 13 ms 23828 KB Output is correct
3 Incorrect 16 ms 23764 KB Output isn't correct
4 Halted 0 ms 0 KB -