2 条题解
-
2
#include<bits/stdc++.h> using namespace std; const int N=1e3+5; char a[N][N]; int vis[N][N]; int n,m,sx,sy,fx,fy; int dx[4]={-1,1,0,0}; int dy[4]={0,0,-1,1}; struct point{ int x,y; }; queue <point> q; int bfs(int x,int y){ point p={x,y}; q.push(p); while(!q.empty()){ point temp=q.front(); q.pop(); if(temp.x==fx && temp.y==fy) return vis[temp.x][temp.y]-1; else{ for(int i=0;i<4;i++){ point np=temp; np.x+=dx[i]; np.y+=dy[i]; if(np.x>=1 && np.x<=n && np.y>=1 && np.y<=n && a[np.x][np.y]=='0' && vis[np.x][np.y]==0){ q.push(np); vis[np.x][np.y]=vis[temp.x][temp.y]+1; } } } } } int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; } } cin>>sx>>sy>>fx>>fy; vis[sx][sy]=1; cout<<bfs(sx,sy)<<endl; return 0; }
信息
- ID
- 5804
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 20
- 已通过
- 7
- 上传者