Aakkosetsumussa @ 2023-07-11 14:44:34
#include<bits/stdc++.h>
using namespace std;
typedef long long inr;
const inr maxn=7e2+10;
inr m,T[maxn][maxn];
struct node {
inr x,y;
};
const inr dx[]= {0,1,-1,0},dy[]= {1,0,0,-1};
inr ans=1e9,s[maxn][maxn];
queue<node> q;
int main() {
cin>>m;
memset(s,-1,sizeof(s));
s[0][0]=0;
memset(T,10001,sizeof(T));
for(inr i=1,x,y,t; i<=m; i++) {
cin>>x>>y>>t;
if(x>=0&&y>=0) T[x][y]=min(T[x][y],t);
for(inr j=0; j<4; j++) {
inr tx=x+dx[j],ty=y+dy[j];
if(tx>=0&&ty>=0) T[tx][ty]=min(T[tx][ty],t);
}
}
q.push((node) {
0,0
});
while(!q.empty()) {
node u=q.front();
q.pop();
for(inr j=0; j<4; j++) {
inr tx=u.x+dx[j],ty=u.y+dy[j];
if(tx<0||ty<0||s[tx][ty]!=-1||s[u.x][u.y]+1>=T[tx][ty]) continue;
s[tx][ty]=s[u.x][u.y]+1;
q.push((node) {
tx,ty
});
}
}
for(inr i=0; i<=305; i++) for(inr j=0; j<=305; j++)
if(T[i][j]>1000&&s[i][j]!=-1) ans=min(ans,s[i][j]);
if(ans==1e9) cout<<"-1";
else cout<<ans;
return 0;
}
by catandcode @ 2023-07-11 14:50:01
@Aakkosetsumussa memset(T,10001,sizeof(T));
这句不能用,memset
并不是能赋任意值,其他有没有没看出来。
by Aakkosetsumussa @ 2023-07-11 14:52:42
@catandcode 谢谢大佬,刚看出来,换成循环赋值就对了