This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
char slje(char str){
if (str=='S'){
return 'W';
}
if (str=='E'){
return 'S';
}
if (str=='N'){
return 'E';
}
if (str=='W'){
return 'N';
}
}
int kor(char str1,char str2){
int kol=0;
while (str1!=str2){
kol++;
str1=slje(str1);
}
return kol;
}
struct dijktyp{
int x;
int y;
int dist;
};
bool operator<(dijktyp pom,dijktyp pom2){
if (pom.dist==pom2.dist){
if (pom.x==pom2.x){
return pom.y<pom2.y;
}
return pom.x<pom2.x;
}
return pom.dist>pom2.dist;
}
int main(){
int n;
int m;
cin >> n >> m;
vector<vector<char>> mat={};
for (int i=0;i<n;i++){
mat.push_back({});
for (int j=0;j<m;j++){
char unos;
cin >> unos;
mat[i].push_back(unos);
}
}
priority_queue<dijktyp> dijklis={};
dijklis.push({0,0,0});
vector<vector<int>> distmat=vector<vector<int>>(n,vector<int>(m,-1));
while (dijklis.size()>0){
dijktyp pom=dijklis.top();
dijklis.pop();
int x=pom.x;
int y=pom.y;
int dist=pom.dist;
if (y==n-1 && x==m-1){
cout << dist << "\n";
exit(0);
}
if (distmat[y][x]!=-1 || mat[y][x]=='X'){
continue;
}
//cout << x << " " << y << " " << dist << "\n";
distmat[y][x]=dist;
if (y>0){
dijklis.push({x,y-1,dist+kor(mat[y][x],'N')});
}
if (y<n-1){
dijklis.push({x,y+1,dist+kor(mat[y][x],'S')});
}
if (x>0){
dijklis.push({x-1,y,dist+kor(mat[y][x],'W')});
}
if (x<m-1){
dijklis.push({x+1,y,dist+kor(mat[y][x],'E')});
}
}
cout << "-1\n";
}
Compilation message (stderr)
adventure.cpp: In function 'char slje(char)':
adventure.cpp:18:1: warning: control reaches end of non-void function [-Wreturn-type]
18 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |