1 条题解
-
0
#include<bits/stdc++.h> using namespace std; struct Node{ int x,y; }; int n,sx,sy,ex,ey; const int N=110; char g[N][N]; int dist[N][N]; int dx[]={-1,1,0,0}; int dy[]={0,0,-1,1}; bool check(int x,int y) //判断出界和不能走 { if(x<1||x>n||y<1||y>n) return false; if(g[x][y]=='x') return false; return true; } int bfs() { queue<Node> q; q.push({sx,sy}); while(q.size()) { Node t=q.front(); q.pop(); if(t.x==ex&&t.y==ey) { return dist[ex][ey]; } for(int i=0;i<4;i++) { int a=t.x+dx[i]; int b=t.y+dy[i]; while(check(a,b)) { if(dist[a][b]>dist[t.x][t.y]+1) { dist[a][b]=dist[t.x][t.y]+1; q.push({a,b}); } a+=dx[i]; b+=dy[i]; } } } } int main() { cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>g[i][j]; if(g[i][j]=='A') sx=i,sy=j; else if(g[i][j]=='B') ex=i,ey=j; } } memset(dist,0x3f,sizeof dist); dist[sx][sy]=0; bfs(); if(dist[ex][ey]==0x3f3f3f3f) cout<<-1; else cout<<dist[ex][ey]-1; return 0; }
- 1
信息
- ID
- 627
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 2
- 上传者