求大佬调qaqqqqqqqqqqqqqqqqq
查看原帖
求大佬调qaqqqqqqqqqqqqqqqqq
750476
Hf_Poem楼主2023/5/30 21:07
#include<bits/stdc++.h>
#define int long long
#define il inline
using namespace std;
const int N=1000;
int m,n,a[N][N],s[N][N],v[N],ans,cnt,l=N+1,r=1;
int dx[5]={0,0,1,0,-1},dy[5]={0,1,0,-1,0};
int i,j;
il int bfs(int mi){
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            if(a[i][j]>mi){
                s[i][j]=1;
            }
        }
    }
    queue<int>qx,qy;
    qx.push(1);
    qy.push(1);
    while(!qx.empty()){
        int x=qx.front(),y=qy.front();
        qx.pop();
        qy.pop();
        for(i=1;i<=4;i++){
            int xx=x+dx[i],yy=y+dy[i];
            if(s[xx][yy]!=1&&xx>=1&&xx<=m&&yy>=1&&yy<=n){
                s[xx][yy]=1;
                qx.push(xx);
                qy.push(yy);
                if(yy==n&&v[xx]!=1){
                	cnt++;
                	v[xx]=1;
				}
                if(cnt==m){
                    cnt=0;
                    for(i=1;i<=n;i++){
                        for(j=1;j<=m;j++){
                            s[i][j]=0;
                        }
                    }
                    for(i=1;i<=m;i++){
                        v[i]=0;
                    }
                    return 1;
                }
            }
        }
    }
    return 0;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>m>>n;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            cin>>a[i][j];
            l=min(l,a[i][j]);
            r=max(r,a[i][j]);
        }
    }
    while(l<=r){
        int mid=(l+r)>>1;
        if(bfs(mid)){
            r=mid-1;
            ans=mid;
        }
        else
            l=mid+1;
    }
    cout<<ans;
    return 0;
}

蒟蒻觉得没问题......

就是过不了吐了

全wa样例都炸

悬关qwq

2023/5/30 21:07
加载中...