#14错了,92分求调
查看原帖
#14错了,92分求调
1331745
yuan197132楼主2024/11/19 16:01
#include<bits/stdc++.h>
using namespace std;
const int numn=310;
int a[numn][numn];
bool bo[numn][numn];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
int findtime(){
    int ans=0;if(a[0][0]==INT_MAX)return 0;
    queue<pair<int,int>> q;
    q.push({0,0});
    bo[0][0]=true;
    while ((!q.empty()))
    {   
        int size=q.size();
        while(size--){
            pair<int,int>temp=q.front();

            q.pop();
            for(int i=0;i<4;i++){
                int nx=temp.first+dx[i];
                int ny=temp.second+dy[i];
                if(nx>-1&&ny>-1&&ans+1<a[nx][ny]&&nx<=300&&ny<=300&&!bo[nx][ny]){
                    if(a[nx][ny]==99999||nx>300||ny>300)return ans+1;
                    q.push({nx,ny});
                    bo[nx][ny]=true;
                }
            }
        }
        ans++;
    }
    return -1;
}
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n;
    cin>>n;
    for(int i = 0; i <= 310; i++) {
    for(int j = 0; j <= 310; j++) {
        a[i][j] = 99999;
    }
}
    memset(bo,0,sizeof(bo));
    for(int i=0;i<n;i++){
        int d,b,c;
        cin>>d>>b>>c;
        a[d][b]=min(a[d][b],c);
        if(d>0)a[d-1][b]=min(a[d-1][b],c);
        if(b>0)a[d][b-1]=min(a[d][b-1],c);
        a[d+1][b]=min(a[d+1][b],c);
        a[d][b+1]=min(c,a[d][b+1]);
    }
    cout<<findtime()<<endl;

}
2024/11/19 16:01
加载中...