Submission #11588831


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

inline int ctoi(char c) { if(c < '0' || '9' < c) throw invalid_argument("ctoi error"); return c - '0'; }
#define rep(i, n) for(int i = 0; i < (int)(n); i++)
#define REP(i, k, n) for(int i = (int)(k); i < (int)(n); i++)
#define all(x) (x).begin(), (x).end()

template <typename T>
inline T gcd(T x, T y){
	if (x <= 0 || y <= 0) throw invalid_argument("gcd error: x <= 0 or y <= 0");
	
	if(x < y) swap(x, y);
	T r = x % y;

	while(r != 0){
		x = y;
		y = r;
		r = x % y;
	}

	return y;
}
template <typename T>
inline T lcm(T x, T y){
	if (x <= 0 || y <= 0) throw invalid_argument("lcm error: x <= 0 or y <= 0");

	return x * y / gcd(x, y);
}

int h, w;
int sy, sx;
int gy, gx;

vector<vector<bool>> walk;
vector<vector<int>> step;
queue<pair<int, int>> q;

void push_bfs(int x, int y, int s){
	if(x < 0 || y < 0 || w <= x || h <= y) return;
	if(!walk[y][x] || step[y][x] != -1) return;

	q.push(make_pair(x, y));
	step[y][x] = s + 1; 
}

int main(){
	cin >> h >> w;
	cin >> sy >> sx;
	cin >> gy >> gx;
	sy--;
	sx--;
	gy--;
	gx--;

	rep(i, h){
		vector<bool> vw;
		vector<int> vs;

		rep(j, w){
			char c;
			cin >> c;

			if(c == '.'){
				vw.push_back(true);
			}
			else{
				vw.push_back(false);
			}

			vs.push_back(-1);
		
		}

		walk.push_back(vw);
		step.push_back(vs);
	}

	q.push(make_pair(sx, sy));
	step[sy][sx] = 0;

	while(!q.empty()){
		pair<int, int> p = q.front();
		int x = p.first;
		int y = p.second;
		q.pop();
		int s = step[y][x];

		push_bfs(x - 1, y, s);
		push_bfs(x + 1, y, s);
		push_bfs(x, y - 1, s);
		push_bfs(x, y + 1, s);
	}

	/*
	for(auto i : step){
		for(auto j : i){
			if(j == -1) cout << j << " ";
			else cout << " " << j << " ";
		}
		cout << endl;
	}
	*/
	
	cout << step[gy][gx] << endl;

	return 0;
}

Submission Info

Submission Time
Task A - 幅優先探索
User daiya06
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1896 Byte
Status AC
Exec Time 1 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 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 1 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 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