View Code of Problem 3499

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int mapp[5][5];
struct node{
    int x,y,pre;
}q[100];
void write(int t){
   if(q[t].pre!=-1)
     write(q[t].pre);
   cout<<"("<<q[t].x<<", "<<q[t].y<<")"<<endl;
}
int main(){
	int i, j;
	int flag=0;
    for(i = 0; i < 5; i++)
        for(j = 0; j < 5; j++)
          scanf("%d",&mapp[i][j]);
    int frontt=0,next=1;
    q[frontt].x=q[frontt].y=0;
    q[frontt].pre=-1;
    mapp[0][0]=1;
    int a,b;
    while(1)
    {
        for(int i=0;i<4;i++)
        {
            b=q[frontt].y+dir[i][1];
            a=q[frontt].x+dir[i][0];

        if(a<0||b<0||a>=5||b>=5||mapp[a][b])
            continue;
        mapp[a][b]=1;
        q[next].x=a;
        q[next].y=b;
        q[next].pre=frontt;
        next++;
        if(a==4&&b==4){
            write(next-1);
            flag=1;break;
        }
        }
        if(flag)break;
        frontt++;
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 3499