fanyuchen2010 @ 2023-04-04 18:42:00
#include<bits/stdc++.h>
using namespace std;
int m;
int mp[305][305];
bool v[305][305];
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
struct node{
int x,y,step;
};
void BFS(){
v[0][0]=true;
queue<node>q;
node k;
k.step=0;
k.x=0;
k.y=0;
q.push(k);
while(q.size()){
node r=q.front();
q.pop();
for(int i=0;i<4;i++){
int ddx=dx[i]+r.x;
int ddy=dy[i]+r.y;
if(ddx>=0&&ddy>=0&&ddx<=301&&ddy<=301&&(r.step+1<mp[ddx][ddy]||mp[ddx][ddy]==0)&&!v[ddx][ddy]){
if(!mp[ddx][ddy]){
cout<<r.step+1;
return;
}
v[ddx][ddy]=true;
k.step=r.step+1;
k.x=ddx;
k.y=ddy;
q.push(k);
}
}
}
cout<<-1;
}
int main(){
cin>>m;
int a,b,c;
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
if(mp[a][b])mp[a][b]=min(mp[a][b],c);
else mp[a][b]=c;
for(int j=0;j<4;j++){
int da=a+dx[j];
int db=b+dy[j];
if(da>=0&&db>=0){
if(mp[da][db])mp[da][db]=min(mp[da][db],c);
else mp[da][db]=c;
}
}
}
BFS();
return 0;
}
by sjyh_jy @ 2023-05-26 22:53:49
第三个数据: 5 0 0 2 3 0 0 1 2 5 2 2 4 1 4 4
我发现我的代码认为0是没落过陨石的,看来要改一下初值了。
不知道你是不是同样的问题。
by wangjunzhe7 @ 2023-08-18 19:09:35
我也是同样的问题。
我发现我的代码在时间为0的时候落陨石赋值是0,而可以走的时候赋值也是0
重复了