View Code of Problem 3499

#include<stdio.h>
#include<math.h>

int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int map[5][5];
struct node{
    int x,y,pre;
}q[100];

void write(int i){
    if(q[i].pre != -1)
        write(q[i].pre);
      printf("(%d, %d)\n",q[i].x,q[i].y);
}

void bfs(){
    int front = 0,next = 1;
    q[0].y = q[0].x = 0;
    q[0].pre = -1;
    map[0][0] = 1;
    while(front < next){
        int i,a,b;
        for(i = 0; i < 4; i++){
            a = q[front].x + dir[i][0];
            b = q[front].y + dir[i][1];
            if(a < 0|| b < 0|| a >= 5|| b >= 5|| map[a][b])
              continue;
            map[a][b] = 1;
            q[next].x = a;
            q[next].y = b;
            q[next].pre = front;
            next++;
            if(a == 4&&b == 4){
                    write(next-1);
                    return ;
            }
        }
        front++;
    }
}

int main(){
	int i, j;
    for(i = 0; i < 5; i++)
        for(j = 0; j < 5; j++)
          scanf("%d",&map[i][j]);
    bfs();
    return 0;
}

Double click to view unformatted code.


Back to problem 3499