| 28752 | 2026-05-28 20:36:45 | LazurAndras | Fantasztikus Kaland Nyílországban | cpp17 | Elfogadva 100/100 | 131ms | 21184 KiB |
#include <bits/stdc++.h>
using namespace std;
signed main() {
ios::sync_with_stdio(false);cin.tie(nullptr);
int n, m; cin >> n >> m;
vector<string>a(n);
for(string &i : a) cin >> i;
vector<vector<pair<int, int>>>g(n*m);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
if(a[i][j] == 'X') continue;
int x;
if(a[i][j] == 'E') x = 0;
else if(a[i][j] == 'N') x = 1;
else if(a[i][j] == 'W') x = 2;
else x = 3;
if(j < m-1) g[i*m+j].push_back({i*m+j+1, x});
if(i < n-1) g[i*m+j].push_back({(i+1)*m+j, (x+1)%4});
if(j > 0) g[i*m+j].push_back({i*m+j-1, (x+2)%4});
if(i > 0) g[i*m+j].push_back({(i-1)*m+j, (x+3)%4});
}
}
vector<int>dist(n*m, 1000000);
dist[0] = 0;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>pq;
pq.push({0, 0});
while(!pq.empty())
{
auto [d, v] = pq.top();
pq.pop();
if(dist[v] != d) continue;
for(auto [u, len] : g[v])
{
if(dist[u] > dist[v] + len)
{
dist[u] = dist[v] + len;
pq.push({dist[u], u});
}
}
}
cout << (dist[n*m-1] == 1000000 ? -1 : dist[n*m-1]);
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 10/10 | ||||||
| 1 | Elfogadva | 1ms | 512 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 | 332 KiB | ||||
| 8 | Elfogadva | 1ms | 316 KiB | ||||
| 9 | Elfogadva | 1ms | 316 KiB | ||||
| 10 | Elfogadva | 1ms | 352 KiB | ||||
| subtask2 | 12/12 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 508 KiB | ||||
| 3 | Elfogadva | 2ms | 316 KiB | ||||
| 4 | Elfogadva | 1ms | 316 KiB | ||||
| 5 | Elfogadva | 1ms | 316 KiB | ||||
| 6 | Elfogadva | 1ms | 508 KiB | ||||
| 7 | Elfogadva | 1ms | 316 KiB | ||||
| 8 | Elfogadva | 1ms | 316 KiB | ||||
| 9 | Elfogadva | 1ms | 500 KiB | ||||
| 10 | Elfogadva | 1ms | 316 KiB | ||||
| subtask3 | 12/12 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 2ms | 544 KiB | ||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 2ms | 508 KiB | ||||
| subtask4 | 16/16 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 500 KiB | ||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 1ms | 508 KiB | ||||
| 5 | Elfogadva | 1ms | 316 KiB | ||||
| 6 | Elfogadva | 1ms | 316 KiB | ||||
| 7 | Elfogadva | 1ms | 512 KiB | ||||
| 8 | Elfogadva | 1ms | 500 KiB | ||||
| 9 | Elfogadva | 1ms | 316 KiB | ||||
| 10 | Elfogadva | 1ms | 316 KiB | ||||
| subtask5 | 50/50 | ||||||
| 1 | Elfogadva | 8ms | 1844 KiB | ||||
| 2 | Elfogadva | 1ms | 384 KiB | ||||
| 3 | Elfogadva | 10ms | 2208 KiB | ||||
| 4 | Elfogadva | 8ms | 2964 KiB | ||||
| 5 | Elfogadva | 105ms | 16808 KiB | ||||
| 6 | Elfogadva | 115ms | 16952 KiB | ||||
| 7 | Elfogadva | 45ms | 16872 KiB | ||||
| 8 | Elfogadva | 104ms | 16976 KiB | ||||
| 9 | Elfogadva | 131ms | 21184 KiB | ||||
| 10 | Elfogadva | 41ms | 16908 KiB | ||||