Submission #1706952


Source Code Expand

#include <iostream>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <algorithm>
#include <tuple>
#include <set>
#include <stack>
#include <queue>
#include <deque>
#define REP(i, n) for(LL i = 0;i < n;i++)
#define REPR(i, n) for(LL i = n;i >= 0;i--)
#define FOR(i, m, n) for(LL i = m;i < n;i++)
#define FORR(i, m, n) for(LL i = m;i >= n;i--)
#define SORT(v, n) sort(v, v+n);
#define VSORT(v) sort(v.begin(), v.end());
#define pb(a) push_back(a)
#define all(x) (x).begin(),(x).end()
#define INF 999999999
#define MOD 1000000007
using namespace std;
typedef long long LL;
typedef pair<int, int> P;
typedef pair<LL, LL> LP;
typedef pair<int, P> PP;
typedef pair<LL, LP> LPP;
int dy[]={0, 0, 1, -1};
int dx[]={1, -1, 0, 0};

/***************using variables ***************/
int r, c;
int sy, sx, gy, gx;
char maze[55][55];
int dis[55][55];
int cnt = 1;
/**********************************************/

void search(){
    queue<P> que;
    dis[sx-1][sy-1] = 0;
    REP(i, 4){
        que.emplace(sx-1 + dx[i], sy-1 + dy[i]);
    }
    
    while(1){
        int num = que.size();
        REP(i, num){
            int searchx = que.front().first;
            int searchy = que.front().second;
            que.pop();
            if(maze[searchx][searchy] != '#' && dis[searchx][searchy] > cnt){
                dis[searchx][searchy] = cnt;
                REP(j, 4){
                    que.emplace(searchx + dx[j], searchy + dy[j]);
                }
            }
        }
        cnt++;
        if(dis[gx-1][gy-1] != INF) break;
    }
}

void printmap(){
    REP(i, r){
        REP(j, c){
            if(maze[j][i] == '#'){
                cout << maze[j][i];
            }else{
                if(dis[j][i] == INF){
                    cout << '*';
                }else{
                    cout << dis[j][i];
                }
            }
        }
        cout << endl;
    }
}

int main(){
    cin >> r >> c;
    cin >> sy >> sx >> gy >> gx;
    REP(i, r){
        REP(j, c){
            cin >> maze[j][i];
            dis[j][i] = INF;
        }
    }

    search();
    // printmap();
    cout << dis[gx-1][gy-1] << endl;
}

Submission Info

Submission Time
Task C - 幅優先探索
User wheson
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2252 Byte
Status AC
Exec Time 2 ms
Memory 256 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 2 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 2 ms 256 KB
subtask1_04.txt AC 2 ms 256 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 2 ms 256 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 2 ms 256 KB
subtask1_11.txt AC 2 ms 256 KB
subtask1_12.txt AC 1 ms 256 KB
subtask1_13.txt AC 2 ms 256 KB
subtask1_14.txt AC 1 ms 256 KB
subtask1_15.txt AC 2 ms 256 KB
subtask1_16.txt AC 2 ms 256 KB
subtask1_17.txt AC 2 ms 256 KB
subtask1_18.txt AC 2 ms 256 KB
subtask1_19.txt AC 1 ms 256 KB
subtask1_20.txt AC 1 ms 256 KB
subtask1_21.txt AC 2 ms 256 KB
subtask1_22.txt AC 2 ms 256 KB