比赛 板子大赛 评测结果 AAAAAAAAAA
题目名称 走迷宫 最终得分 100
用户昵称 AeeE5x 运行时间 0.030 s
代码语言 C++ 内存使用 3.50 MiB
提交时间 2025-01-22 13:13:47
显示代码纯文本
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. int n,m,sx,sy,ex,ey;
  5. bool mp[21][21],isf=1;
  6.  
  7. struct node{int x,y;};
  8. vector<node> ans;
  9.  
  10. int wa[4][2]={{-1,0},{0,-1},{0,1},{1,0}};
  11. bool vis[21][21];
  12.  
  13. void dfs(int x,int y){
  14. vis[x][y]=1;
  15. ans.push_back((node){x,y});
  16. if(x==ex&&y==ey){
  17. printf("(%d,%d)",sx,sy);
  18. for(int i=1;i<ans.size();i++) printf("->(%d,%d)",ans[i].x,ans[i].y);
  19. printf("\n");
  20. isf=0;
  21. }else{
  22. for(int i=0;i<4;i++){
  23. int xx=x+wa[i][0];
  24. int yy=y+wa[i][1];
  25. if(xx<=0||yy<=0||xx>n||yy>m||!mp[xx][yy]||vis[xx][yy]) continue;
  26. dfs(xx,yy);
  27. }
  28. }
  29. vis[x][y]=0;
  30. ans.pop_back();
  31. }
  32. int main(){
  33. freopen("maize.in","r",stdin);
  34. freopen("maize.out","w",stdout);
  35. scanf("%d%d",&n,&m);
  36. for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&mp[i][j]);
  37. scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
  38. dfs(sx,sy);
  39. if(isf) cout<<"-1";
  40. return 0;
  41. }