| 28692 | 2026-05-27 18:03:58 | Kristóf | Fantasztikus Kaland Nyílországban | cpp17 | Elfogadva 100/100 | 104ms | 9440 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
ll INF=1e16;
struct Node
{
ll cost,i,j;
bool operator<(const Node &other) const
{
return cost>other.cost;
}
};
int n,m;
bool isvalid(int i,int j)
{
if(i>=n || i<0)return false;
if(j>=m || j<0)return false;
return true;
}
int main() {
cin>>n>>m;
vector<vector<int>> base(n,vector<int> (m));
map<char,int> type;
type['N']=0;
type['E']=1;
type['S']=2;
type['W']=3;
type['X']=5;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
char x;cin>>x;
base[i][j]=type[x];
}
}
vector<vector<ll>> dp(n,vector<ll> (m,INF));
dp[0][0]=0;
priority_queue<Node> pq;
pq.push({0,0,0});
vector<pair<int,int>> dir={{-1,0},{0,1},{1,0},{0,-1}};
while(pq.size())
{
auto [cost,i,j]=pq.top();pq.pop();
if(cost>dp[i][j] || base[i][j]==5)continue;
int cnt=-1;
for(auto[x,y]:dir)
{
cnt++;
int ni=i+x;
int nj=j+y;
if(!isvalid(ni,nj))continue;
int ncost=(cnt-base[i][j]+4)%4;
if(ncost+cost<dp[ni][nj])
{
dp[ni][nj]=cost+ncost;
pq.push({ncost+cost,ni,nj});
}
}
}
cout<<((dp[n-1][m-1]==INF)? -1 : dp[n-1][m-1]);
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 10/10 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 316 KiB | ||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 1ms | 316 KiB | ||||
| 5 | Elfogadva | 1ms | 316 KiB | ||||
| 6 | Elfogadva | 1ms | 316 KiB | ||||
| 7 | Elfogadva | 1ms | 320 KiB | ||||
| 8 | Elfogadva | 1ms | 316 KiB | ||||
| 9 | Elfogadva | 1ms | 316 KiB | ||||
| 10 | Elfogadva | 1ms | 316 KiB | ||||
| subtask2 | 12/12 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 316 KiB | ||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 1ms | 316 KiB | ||||
| 5 | Elfogadva | 1ms | 316 KiB | ||||
| 6 | Elfogadva | 1ms | 492 KiB | ||||
| 7 | Elfogadva | 1ms | 508 KiB | ||||
| 8 | Elfogadva | 1ms | 316 KiB | ||||
| 9 | Elfogadva | 1ms | 316 KiB | ||||
| 10 | Elfogadva | 1ms | 368 KiB | ||||
| subtask3 | 12/12 | ||||||
| 1 | Elfogadva | 2ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 316 KiB | ||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 1ms | 316 KiB | ||||
| subtask4 | 16/16 | ||||||
| 1 | Elfogadva | 2ms | 316 KiB | ||||
| 2 | Elfogadva | 2ms | 500 KiB | ||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 1ms | 508 KiB | ||||
| 5 | Elfogadva | 2ms | 508 KiB | ||||
| 6 | Elfogadva | 2ms | 316 KiB | ||||
| 7 | Elfogadva | 2ms | 316 KiB | ||||
| 8 | Elfogadva | 2ms | 316 KiB | ||||
| 9 | Elfogadva | 1ms | 332 KiB | ||||
| 10 | Elfogadva | 1ms | 316 KiB | ||||
| subtask5 | 50/50 | ||||||
| 1 | Elfogadva | 6ms | 580 KiB | ||||
| 2 | Elfogadva | 1ms | 508 KiB | ||||
| 3 | Elfogadva | 7ms | 564 KiB | ||||
| 4 | Elfogadva | 4ms | 828 KiB | ||||
| 5 | Elfogadva | 67ms | 3452 KiB | ||||
| 6 | Elfogadva | 70ms | 3444 KiB | ||||
| 7 | Elfogadva | 24ms | 3184 KiB | ||||
| 8 | Elfogadva | 68ms | 3380 KiB | ||||
| 9 | Elfogadva | 104ms | 9440 KiB | ||||
| 10 | Elfogadva | 24ms | 3192 KiB | ||||