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
using namespace std; int main() { // ofstream cout("out.txt"); int n, m; char mat[1000][1000]; cin >> n >> m; queue
q; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ cin >> mat[i][j]; } } bool visited[1000][1000]; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ visited[i][j] = false; } } int di[] = {1, -1, 0, 0}; int dj[] = {0, 0, 1, -1}; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ if (mat[i][j] == 'S'){ q.push(i); q.push(j); q.push(0); visited[i][j] = true; } } } while (!q.empty()){ int ci, cj, dist; ci = q.front(); q.pop(); cj = q.front(); q.pop(); dist = q.front(); q.pop(); if (mat[ci][cj] == 'E'){ cout << dist << endl; return 0; } for (int i = 0; i < 4; i++){ int ti = ci + di[i], tj = cj + dj[i]; if (ti >= n or ti < 0 or tj >= m or tj < 0) continue; if (visited[ti][tj] == true) continue; if (mat[ti][tj] == '#') continue; q.push(ti); q.push(tj); q.push(dist + 1); visited[ti][tj] = true; } } int najgolem_pat = -1; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ if (mat[i][j] == '#'){ for (int p = 0; p < n; p++){ for (int k = 0; k < m; k++){ visited[p][k] = false; } } q.push(i); q.push(j); q.push(0); visited[i][j] = true; int diste = -1, dists = -1; while (!q.empty()){ int ci, cj, dist; ci = q.front(); q.pop(); cj = q.front(); q.pop(); dist = q.front(); q.pop(); if (mat[ci][cj] == 'E'){ diste = dist; } if (mat[ci][cj] == 'S'){ dists = dist; } for (int z = 0; z < 4; z++){ int ti = ci + di[z], tj = cj + dj[z]; if (ti >= n or ti < 0 or tj >= m or tj < 0) continue; if (visited[ti][tj] == true) continue; if (mat[ti][tj] == '#') continue; q.push(ti); q.push(tj); q.push(dist + 1); visited[ti][tj] = true; } } // cout << diste << " " << dists << endl; if(diste == -1 or dists == -1) continue; if (diste + dists > najgolem_pat){ najgolem_pat = diste + dists; } } } } cout << najgolem_pat << 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)