Submission #162942


Source Code Expand

#include <string>
#include <iostream>
#include <vector>
#include <complex>
#include <queue>
#include <utility>
using namespace std;

enum{EEmpty=0,EWall,EStart,EGoal};

inline int g_c(int x,int y,int C){ return x+C*y; }
inline int g_c(complex<int> c,int C){ return c.real()+C*c.imag(); }

int main(void){
	int R,C,_x,_y;

	cin >> R >> C;
	cin >> _y >> _x;
	complex<int> st(_x-1,_y-1);
	cin >> _y >> _x;
	complex<int> gl(_x-1,_y-1);

	vector<int> c(R*C),ans(R*C,-1);
	for(int i=0;i<R;++i){
		std::string line;
		cin >> line;
		for(int j=0;j<C;++j){
			if(line[j]=='.'){ c[i*C+j] = EEmpty;}
			else{ c[i*C+j] = EWall;}
		}
	}
	c[g_c(st,C)] = EStart;
	c[g_c(gl,C)] = EGoal;

	queue<complex<int> > now,next;
	now.push( st );
	int gen = 0;
	while(!now.empty()){
		while(!now.empty()){
			complex<int> nc = now.front(),t;
			now.pop();
			//now
			ans[ g_c(nc,C) ] = gen;
			if(nc==gl){
				cout << gen << endl; return 0;
			}
			//next
			t=nc; t-=complex<int>(0,1);
			if(t.imag()>=0 && c[g_c(t,C)]!=EWall && ans[g_c(t,C)]==-1){ next.push(t);ans[g_c(t,C)]=-2; }
			t=nc; t-=complex<int>(1,0);
			if(t.real()>=0 && c[g_c(t,C)]!=EWall && ans[g_c(t,C)]==-1 ){ next.push(t);ans[g_c(t,C)]=-2; }
			t=nc; t+=complex<int>(0,1);
			if(t.imag()<R && c[g_c(t,C)]!=EWall && ans[g_c(t,C)]==-1 ){ next.push(t);ans[g_c(t,C)]=-2; }
			t=nc; t+=complex<int>(1,0);
			if(t.real()<C && c[g_c(t,C)]!=EWall && ans[g_c(t,C)]==-1 ){ next.push(t);ans[g_c(t,C)]=-2; }
		}

		swap(now,next);
		++gen;
	}

	//string in;
	//cin >> in;
	//if(in.length() > 1){
	//	cout << in.substr(0,in.length()-1) << endl;
	//}else if(in[0]!='a'){
	//	cout << static_cast<char>(in[0]-1) << endl;
	//}else{
	//	cout << "-1" << endl;
	//}
	
	return 0;
}

Submission Info

Submission Time
Task C - 幅優先探索
User destroist
Language C++ (G++ 4.6.4)
Score 100
Code Size 1776 Byte
Status AC
Exec Time 24 ms
Memory 932 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 22 ms 792 KB
subtask0_sample02.txt AC 23 ms 920 KB
subtask0_sample03.txt AC 22 ms 932 KB
subtask1_01.txt AC 24 ms 916 KB
subtask1_02.txt AC 23 ms 808 KB
subtask1_03.txt AC 23 ms 916 KB
subtask1_04.txt AC 21 ms 916 KB
subtask1_05.txt AC 22 ms 840 KB
subtask1_06.txt AC 22 ms 920 KB
subtask1_07.txt AC 20 ms 924 KB
subtask1_08.txt AC 23 ms 800 KB
subtask1_09.txt AC 24 ms 920 KB
subtask1_10.txt AC 24 ms 844 KB
subtask1_11.txt AC 23 ms 912 KB
subtask1_12.txt AC 22 ms 808 KB
subtask1_13.txt AC 24 ms 920 KB
subtask1_14.txt AC 23 ms 800 KB
subtask1_15.txt AC 22 ms 844 KB
subtask1_16.txt AC 22 ms 920 KB
subtask1_17.txt AC 24 ms 796 KB
subtask1_18.txt AC 23 ms 920 KB
subtask1_19.txt AC 24 ms 788 KB
subtask1_20.txt AC 22 ms 916 KB
subtask1_21.txt AC 20 ms 916 KB
subtask1_22.txt AC 23 ms 916 KB