Help!!! 2AC8MLE
查看原帖
Help!!! 2AC8MLE
995711
AKIOI_GO楼主2025/1/28 19:54
#include <bits/stdc++.h>
using namespace std;
int n,m,l=9999,r=-1000,mid,ans;
int mp[1001][1001],dr[]{0,0,1,-1},dc[]{1,-1,0,0};
bool v[1001][1001];
bool bfs(int w){
	queue<pair<int,int>>q;
	q.push(make_pair(0,0));
	while(!q.empty()){
		int x=q.front().first,y=q.front().second;
		v[x][y]=1;
		q.pop();
		for(int i=0;i<4;i++){
			int a=x+dr[i],b=y+dc[i];
			if(a<0||b<0||a>=n||b>=m||v[a][b]||mp[a][b]>w)continue;
			if(a==n-1)
				return true;
			q.push(make_pair(a,b));
		}
	}
	return false;
}
int main(){
	cin.tie(0);
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>mp[i][j];
			if(mp[i][j]<l&&i!=0&&i<n-1)l=mp[i][j];
			if(mp[i][j]>r)r=mp[i][j];
		}
	}
	while(l<=r){
		int mid=(l+r)/2;
		memset(v,0,sizeof(v));
		if(bfs(mid))r=mid-1,ans=mid;
		else l=mid+1;
	}
	cout<<ans;
	return 0;
}
2025/1/28 19:54
加载中...