/*
I faced segmentation fault at first, because I made map as int (int map[16][16])
but the input text was actually too long, so I changed it to 'string' type.
*/
#include <iostream>
#include <string>
using namespace std;
struct dot {
int x;
int y;
};
dot startP,endP;
string map[16];
int visit[16][16];
int dir[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};
int find_flag;
void calc(int cur_x, int cur_y) {
if(visit[cur_y][cur_x] == 1) return;
else {
visit[cur_y][cur_x] = 1;
if(map[cur_y][cur_x] == '1') return;
else if (map[cur_y][cur_x] == '3') {
find_flag = 1;
return;
}
for(int i=0;i<4;i++) calc(cur_x+dir[i][0],cur_y+dir[i][1]);
}
}
int main() {
for(int k=1;k<=10;k++) {
int n;
cin >> n;
for(int j=0;j<16;j++) {
cin >> map[j];
for(int i=0;i<16;i++) {
visit[j][i] = 0;
if(map[j][i] == '2') {
startP.x = i;
startP.y = j;
} else if (map[j][i] == '3') {
endP.x = i;
endP.y = j;
}
}
}
find_flag = 0;
calc(startP.x,startP.y);
cout << "#" << k << " " << find_flag << endl;
}
return 0;
}
댓글 없음:
댓글 쓰기