求助,自己的代码0分,感觉改的和题解都相差无几了,真的**的调的心态爆炸了,求求谷内各位大佬帮帮蒟蒻看看是什么问题?
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<cstring>
using namespace std;
typedef pair<int,int> PII;
const int N=1100;
int n,m,maxl,ans,a[N][N];
int dx[5]={0,0,1,-1};
int dy[5]={1,-1,0,0};
queue<PII> q;
bool st[N][N];
bool bfs(int mid){
q.push(PII(1,1));
memset(st,false,sizeof st);
st[1][1]=true;
while(q.size()){
PII t=q.front();
q.pop();
for(int i=0;i<=4;i++){
int sx=t.first+dx[i],sy=t.second+dy[i];
if(sx<=0||sx>n||sy<=0||sy>m||st[sx][sy]==true||a[sx][sy]>mid){
continue;
}
if(sx==n){
return true;
}
st[sx][sy]=true;
q.push(PII(sx,sy));
}
}
return false;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
maxl=max(maxl,a[i][j]);
}
}
int l=0,r=maxl;
while(l<r){
int mid=(l+r)>>1;
if(bfs(mid)==true){
r=mid-1;
ans=mid;
}
else{
l=mid+1;
}
}
printf("%d",l);
}