Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
#include
#include
#include
using namespace std; const int maxn = 1050; char mat[maxn][maxn]; int main() { ios_base::sync_with_stdio(false); int n, m, k; cin >> n >> m >> k; int si, sj, ei, ej; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { cin >> mat[i][j]; if(mat[i][j] == 'M') { si = i; sj = j; } if(mat[i][j] == 'V') { ei = i; ej = j; } } } mat[si][sj] = '.'; mat[ei][ej] = '.'; int di[] = {-1, 1, 0, 0}; int dj[] = {0, 0, -1, 1}; vector
> visited(n + 1, vector
(m + 1, false)); visited[si][sj] = true; queue
q; q.push(si); q.push(sj); vector
> points_from_walls; while(!q.empty()) { int ci = q.front(); q.pop(); int cj = q.front(); q.pop(); if(ci == ei and cj == ej) { cout << "DA" << endl; return 0; } for(int i = 0; i < 4; i++) { int ti = ci + di[i]; int tj = cj + dj[i]; if(ti >= 0 and ti < n and tj >= 0 and tj < m and !visited[ti][tj]) { if(mat[ti][tj] == '#') { points_from_walls.push_back(make_pair(ci, cj)); } else { visited[ti][tj] = true; q.push(ti); q.push(tj); } } } } vector
> dist(n + 1, vector
(m + 1, -1)); for(pair
x : points_from_walls) { q.push(x.first); q.push(x.second); dist[x.first][x.second] = 0; } dist[si][sj] = 0; while(!q.empty()) { int ci = q.front(); q.pop(); int cj = q.front(); q.pop(); for(int i = 0; i < 4; i++) { int ti = ci + di[i]; int tj = cj + dj[i]; if(ti >= 0 and ti < n and tj >= 0 and tj < m and dist[ti][tj] == -1) { dist[ti][tj] = dist[ci][cj] + 1; q.push(ti); q.push(tj); } } } q.push(ei); q.push(ej); for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { visited[i][j] = false; } } visited[ei][ej] = true; while(!q.empty()) { int ci = q.front(); q.pop(); int cj = q.front(); q.pop(); if(mat[ci][cj] == '.' and dist[ci][cj] <= k) { cout << "DA" << endl; return 0; } for(int i = 0; i < 4; i++) { int ti = ci + di[i]; int tj = cj + dj[i]; if(ti >= 0 and ti < n and tj >= 0 and tj < m and mat[ti][tj] != '#' and !visited[ti][tj]) { visited[ti][tj] = true; q.push(ti); q.push(tj); } } } cout << "NE" << endl; return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)