Submission #162594


Source Code Expand

#include <iostream>
using namespace std;

int map[51][51];
bool next[51][51];

int serch(int y,int x){
	int min=9999999;
	for(int i=-1;i<=1;i+=2){
		if(map[y+i][x] <= min && map[y+i][x] >= 0){
			min = map[y+i][x];
		}
		if(map[y+i][x] == -1){
			map[y+i][x] = -4;
		}
		if(map[y][x+i] <= min && map[y][x+i] >= 0){
			min = map[y][x+i];
		}
		if(map[y][x+i] == -1){
			map[y][x+i] = -4;
		}
	}
	if(min == 9999999){
		min = -1;
	}
	if(map[y-1][x] == -2 && map[y+1][x] == -2 && map[y][x-1] == -2 && map[y][x+1] == -2){
		min = -3;
	}
	return min;
}

int main() {
	// your code goes here
	int r,c;
	int sx,sy;
	int gx,gy;
	char s;
	bool check;
	int buf;
	
	cin >> r >> c;
	cin >> sy >> sx;
	cin >> gy >> gx;
	
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			cin >> s;
			if(s=='#'){
				map[i][j] = -2;
			}else{
				map[i][j] = -1;
			}
			//cout << map[i][j];
		}
		//cout << endl;
	}
	
	map[sy][sx] = 0;
	
	if(map[sy-1][sx] == -1){
		map[sy-1][sx] = -4;
	}
	if(map[sy][sx-1] == -1){
		map[sy][sx-1] = -4;
	}
	if(map[sy+1][sx] == -1){
		map[sy+1][sx] = -4;
	}
	if(map[sy][sx+1] == -1){
		map[sy][sx+1] = -4;
	}
	
	while(1){
		check = true;
		
		for(int i=1;i<=r;i++){
			for(int j=1;j<=c;j++){
				if(map[i][j] == -4){
					buf = serch(i,j);
					if(buf > -1){
						map[i][j] = buf+1;
					}else{
						map[i][j] = -1;
					}
					if(buf == -3){
						map[i][j] = -3;
					}
					check = false;
				}
			}
		}
		
		if(check){
			break;
		}
	}
	
	/*for(int i=0;i<r;i++){
		for(int j=0;j<c;j++){
			if(map[i][j] == -2){
				//cout << '*';
			}else{
				//cout << map[i][j];
			}
		}
		//cout << endl;
	}*/
	
	cout << map[gy][gx] << endl;
	
	return 0;
}

Submission Info

Submission Time
Task C - 幅優先探索
User monman53
Language C++ (G++ 4.6.4)
Score 100
Code Size 1765 Byte
Status AC
Exec Time 26 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 20 ms 800 KB
subtask0_sample02.txt AC 21 ms 928 KB
subtask0_sample03.txt AC 21 ms 932 KB
subtask1_01.txt AC 22 ms 796 KB
subtask1_02.txt AC 26 ms 764 KB
subtask1_03.txt AC 21 ms 800 KB
subtask1_04.txt AC 21 ms 928 KB
subtask1_05.txt AC 22 ms 932 KB
subtask1_06.txt AC 23 ms 800 KB
subtask1_07.txt AC 22 ms 928 KB
subtask1_08.txt AC 21 ms 924 KB
subtask1_09.txt AC 22 ms 928 KB
subtask1_10.txt AC 22 ms 924 KB
subtask1_11.txt AC 23 ms 812 KB
subtask1_12.txt AC 22 ms 924 KB
subtask1_13.txt AC 24 ms 768 KB
subtask1_14.txt AC 21 ms 800 KB
subtask1_15.txt AC 22 ms 924 KB
subtask1_16.txt AC 24 ms 748 KB
subtask1_17.txt AC 21 ms 932 KB
subtask1_18.txt AC 21 ms 932 KB
subtask1_19.txt AC 22 ms 792 KB
subtask1_20.txt AC 22 ms 800 KB
subtask1_21.txt AC 22 ms 800 KB
subtask1_22.txt AC 23 ms 924 KB