92分代码求助(1个点WA)

P2895 [USACO08FEB] Meteor Shower S

_Ventus_ @ 2022-01-28 10:15:52

#include<bits/stdc++.h>
using namespace std;
int n,x,y,t;
int ma[301][301],v[301][301],ans[301][301];
int dx[5]={0,0,0,1,-1},dy[5]={0,1,-1,0,0};
bool flag=true;
queue<int> q[2];
int ch(int a){
    if(a==-1) return 99999;
    else return a;
}
int main(){
    cin>>n;
    for(int i=0;i<301;i++){
        for(int j=0;j<301;j++) ma[i][j]=-1;
    }
    for(int i=1;i<=n;i++){
        cin>>x>>y>>t;
        for(int j=0;j<=4;j++){
            if(x+dx[j]>=0&&y+dy[j]>=0&&(ma[x+dx[j]][y+dy[j]]==-1||ma[x+dx[j]][y+dy[j]]>t)) ma[x+dx[j]][y+dy[j]]=t;
        } 
    }
    v[0][0]=1;
    q[0].push(0),q[1].push(0);
    while(!q[0].empty()){
        int tx=q[0].front(),ty=q[1].front();
        q[0].pop(),q[1].pop();
        int s=ans[tx][ty]+1;
        if(ma[tx][ty]==-1){ 
            cout<<s-1;
            flag=false;
            break;
        }
        for(int i=1;i<=4;i++){
            int sx=tx+dx[i],sy=ty+dy[i];
            if(sx>=0&&sy>=0&&s<ch(ma[sx][sy])&&v[sx][sy]==0){
                q[0].push(sx),q[1].push(sy);
                v[sx][sy]=1,ans[sx][sy]=s;
            }
        }
    }
    if(flag) cout<<-1;
    return 0;
}

by Jasonde1024 @ 2022-07-10 09:33:31

本来也是WA了最后一个点,听了大家的建议之后AC了,万分感谢!!!


上一页 |