Submission #6911487


Source Code Expand

#include <algorithm>
#include <iostream>
#include <queue>
#include <string>
#include <vector>

using namespace std;

const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};

int main() {
  int R, C;
  cin >> R >> C;
  int s[2];
  cin >> s[0] >> s[1];
  s[0] -= 1;  // 0-origin
  s[1] -= 1;
  int g[2];
  cin >> g[0] >> g[1];
  g[0] -= 1;  // 0-origin
  g[1] -= 1;

  // mapへの代入
  vector<vector<char>> map;
  for (int i = 0; i < R; ++i) {
    vector<char> map_line(C);
    for (int j = 0; j < C; ++j) {
      cin >> map_line[j];
    }
    map.push_back(map_line);
  }
  vector<vector<int>> visited;
  queue<pair<int, int>> tovisit;

  for (int i = 0; i < R; ++i) {
    vector<int> tmp(C, -1);
    visited.push_back(tmp);  // −1で未訪問を表す
  }

  visited[s[0]][s[1]] = 0;
  tovisit.push(make_pair(s[0], s[1]));
  while (!tovisit.empty()) {
    int here[2] = {tovisit.front().first, tovisit.front().second};
    tovisit.pop();

    for (int dir = 0; dir < 4; ++dir) {
      int x = here[0] + dx[dir];
      int y = here[1] + dy[dir];

      if (map[x][y] == '#') continue;
      if (visited[x][y] != -1) continue;  // 訪問済

      visited[x][y] = visited[here[0]][here[1]] + 1;
      tovisit.push(make_pair(x, y));
    }
  }

  cout << visited[g[0]][g[1]] << endl;

  // debug
  // for (int i = 0; i < R; ++i) {
  //   for (int j = 0; j < C; ++j) {
  //     if (visited[i][j] == -1)
  //       cout << "#";  // 壁
  //     else
  //       cout << visited[i][j];
  //     if (j == C - 1) cout << endl;
  //   }
  // }
}

Submission Info

Submission Time
Task A - 幅優先探索
User over110
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1622 Byte
Status AC
Exec Time 3 ms
Memory 384 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 25
Set Name Test Cases
Sample subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt
All subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt
Case Name Status Exec Time Memory
subtask0_sample01.txt AC 1 ms 256 KB
subtask0_sample02.txt AC 1 ms 256 KB
subtask0_sample03.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 1 ms 256 KB
subtask1_04.txt AC 1 ms 256 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 3 ms 384 KB
subtask1_07.txt AC 1 ms 256 KB
subtask1_08.txt AC 1 ms 256 KB
subtask1_09.txt AC 1 ms 256 KB
subtask1_10.txt AC 1 ms 256 KB
subtask1_11.txt AC 1 ms 256 KB
subtask1_12.txt AC 1 ms 256 KB
subtask1_13.txt AC 1 ms 256 KB
subtask1_14.txt AC 1 ms 256 KB
subtask1_15.txt AC 1 ms 256 KB
subtask1_16.txt AC 1 ms 256 KB
subtask1_17.txt AC 1 ms 256 KB
subtask1_18.txt AC 1 ms 256 KB
subtask1_19.txt AC 1 ms 256 KB
subtask1_20.txt AC 1 ms 256 KB
subtask1_21.txt AC 1 ms 256 KB
subtask1_22.txt AC 1 ms 256 KB