P1902 刺杀大使MLE,求调(必关)
查看原帖
P1902 刺杀大使MLE,求调(必关)
1389244
Lihaoyang2楼主2025/7/21 21:37
#include<bits/stdc++.h>
using namespace std;
int p[10100][10010];
bool vis[10010][101001];
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
int n,m;
bool dfs(int x,int y,int q){
    if(x==n)
		return 1;
    vis[x][y]=1;
    for(int i=0;i<4;i++){
        int a=x+dx[i];
		int b=y+dy[i];
        if(a>=1&&a<=n&&b>=1&&b<=m&&!vis[a][b]&&p[a][b]<=q){
            if(dfs(a,b,q))return 1;
        }
    }
    return 0;
}
int find(){
    int l=-1;int r=1001;
    while(l+1<r){
        int mid=(l+r)/2;
        memset(vis,0,sizeof vis);
        if(dfs(1,1,mid))r=mid;
        else l=mid;
    }
    cout<<r;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>p[i][j];
        }
    }
    find();
	return 0;
}
2025/7/21 21:37
加载中...