全RE求助
查看原帖
全RE求助
576378
creation_hy楼主2022/8/11 10:56

《本地AC,洛谷RE》

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1005;
struct node{
	int x,y;
}tmp;
const int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
int n,m,a[MAXN][MAXN],maxp;
queue<node>q;
bool vis[MAXN][MAXN];
bool bfs(int x)
{
	q=queue<node>();
	q.push((node){1,1});
	int tx,ty;
	memset(vis,false,sizeof(vis));
	vis[1][1]=true;
	while(!q.empty())
	{
		tmp=q.front();q.pop();
		for(int i=0;i<4;i++){
			tx=tmp.x+dx[i];ty=tmp.y+dy[i];
			if(tx>0&&ty>0&&tx<=n&&ty<=m&&a[tx][ty]<=x&&!vis[tx][ty]){
				vis[tx][ty]=true;
				q.push((node){tx,ty});
				if(tx==n)return true;
			}
		}
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			maxp=max(maxp,a[i][j]);
		}
	int l=0,r=maxp,mid;
	while(l<=r)
	{
		mid=l+r>>1;
		if(bfs(mid))r=mid-1;
		else l=mid+1;
	}
	cout<<r+1;
	return 0;
}
2022/8/11 10:56
加载中...