社区讨论
84分求条
P2802回家参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhjdslrl
- 此快照首次捕获于
- 2025/11/04 00:55 4 个月前
- 此快照最后确认于
- 2025/11/04 00:55 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int maxn=10;
int n,m,a[maxn][maxn],vis[maxn][maxn],way[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
struct stu{
int x,y,step,h;
};
queue<stu> q;
inline void bfs(){
while(q.size()){
int x=q.front().x;
int y=q.front().y;
int s=q.front().step;
int h=q.front().h;
if(a[x][y]==3){
cout<<s;
return;
}
q.pop();
for(int i=0;i<4;i++){
int nx=x+way[i][0];
int ny=y+way[i][1];
if(nx<1 || nx>n || ny<1 || ny>m || vis[nx][ny]==1 || a[nx][ny]==0 || h<=1){
continue;
}
if(a[nx][ny]==4){
q.push({nx,ny,s+1,6});
}else{
q.push({nx,ny,s+1,h-1});
}
vis[nx][ny]=1;
}
}
cout<<-1;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]==2){
q.push({i,j,0,6});
vis[i][j]=1;
}
}
}
bfs();
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...