社区讨论
80pts求调(必关)
P2802回家参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mlmdgy5o
- 此快照首次捕获于
- 2026/02/14 21:48 5 天前
- 此快照最后确认于
- 2026/02/18 17:15 24 小时前
#1TLE #12WA
CPP#include<bits/stdc++.h>
using namespace std;
int n,m,a[15][15],ox,oy,ans=INT_MAX,fx,fy,dx[10]={0,0,-1,1},dy[10]={-1,1,0,0};
bool f[15][15];
void dfs(int x,int y,int t,int sum){
if(sum>=ans||t==0){
return;
}
int v=t;
if(a[x][y]==4){
v=6;
}
if(x==fx&&y==fy){
ans=sum;
return;
}
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(f[nx][ny]){
f[x][y]=0;
dfs(nx,ny,v-1,sum+1);
f[x][y]=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]!=0){
f[i][j]=1;
}
if(a[i][j]==2){
ox=i,oy=j;
}
if(a[i][j]==3){
fx=i,fy=j;
}
}
}
dfs(ox,oy,6,0);
if(ans==INT_MAX){
cout<<"-1";
}else{
cout<<ans;
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...