POJ 3009

来源:互联网 发布:mac os 终端命令 编辑:程序博客网 时间:2024/06/06 05:52
 #include<iostream>#include<cstdio>using namespace std;int Map[30][30];int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};int ans;int n,m;int sx,sy;void dfs(int x,int y,int sum){    if(sum>=10)return;    for(int i=0;i<4;i++){        int tx=x+dir[i][0];        int ty=y+dir[i][1];        if(Map[tx][ty]==1)continue;        while(!Map[tx][ty]){            tx+=dir[i][0];            ty+=dir[i][1];        }        if(tx<0||tx>n-1||ty<0||ty>m-1)continue;        if(Map[tx][ty]==1){            Map[tx][ty]=0;            dfs(tx-dir[i][0],ty-dir[i][1],sum+1);            Map[tx][ty]=1;        }        if(Map[tx][ty]==3){            ans=min(ans,sum+1);        }    }}int main(){    while(scanf("%d%d",&m,&n)!=EOF&&(n&&m))    {        for(int i=0; i<n; i++)            for(int j=0; j<m; j++)            {                scanf("%d",&Map[i][j]);                if(Map[i][j]==2)                {                    sx=i;                    sy=j;                    Map[i][j]=0;                }            }        ans=11;        dfs(sx,sy,0);        if(ans<11)  printf("%d\n",ans);        else printf("-1\n");    }    return 0;}
原创粉丝点击