| 比赛 | 
    板子大赛 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    走迷宫 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    AeeE5x | 
    运行时间 | 
    0.030 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.50 MiB  | 
    | 提交时间 | 
    2025-01-22 13:13:47 | 
显示代码纯文本
#include<iostream> 
#include<vector>
using namespace std;
int n,m,sx,sy,ex,ey;
bool mp[21][21],isf=1;
struct node{int x,y;};
vector<node> ans;
int wa[4][2]={{-1,0},{0,-1},{0,1},{1,0}};
bool vis[21][21];
void dfs(int x,int y){
    vis[x][y]=1;
    ans.push_back((node){x,y});
    if(x==ex&&y==ey){
        printf("(%d,%d)",sx,sy);
        for(int i=1;i<ans.size();i++) printf("->(%d,%d)",ans[i].x,ans[i].y);
        printf("\n");
        isf=0;
    }else{
        for(int i=0;i<4;i++){
            int xx=x+wa[i][0];
            int yy=y+wa[i][1];
            if(xx<=0||yy<=0||xx>n||yy>m||!mp[xx][yy]||vis[xx][yy]) continue;
            dfs(xx,yy);
        }
    }
    vis[x][y]=0;
    ans.pop_back();
}
int main(){
    freopen("maize.in","r",stdin);
    freopen("maize.out","w",stdout);
    
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&mp[i][j]);
    
    scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
    
    dfs(sx,sy);
    if(isf) cout<<"-1";
    
    return 0;
}