#9~#14TLE求助!

P2895 [USACO08FEB] Meteor Shower S

zzy_zzy @ 2023-03-25 17:26:45

RT.代码如下:

#include<bits/stdc++.h>
using namespace std;
int ti[310][310],step[310][310],dx[5]={1,-1,0,0,0},dy[5]={0,0,1,-1,0},ans=-1;
queue<pair<int,int> >q;
void bfs(){
    q.push(make_pair(1,1));
    step[1][1]=0;
    while(q.size()){
        int x=q.front().first,y=q.front().second;
        q.pop();
        for(int i=0;i<4;i++){
            int xx=x+dx[i];
            int yy=y+dy[i];
            if(xx>0&&xx<=301&&yy>0&&yy<=301&&step[x][y]+1<ti[xx][yy]){
                q.push(make_pair(xx,yy));
                step[xx][yy]=step[x][y]+1;
                if(ti[xx][yy]==INT_MAX){
                    ans=step[xx][yy];
                    return;
                }
            }
        }
    }
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=310;i++){
        for(int j=1;j<=310;j++){
            ti[i][j]=INT_MAX;
        }
    }
    for(int i=1;i<=n;i++){
        int x,y,time;
        cin>>x>>y>>time;
        x++,y++;
        for(int j=0;j<5;j++){
            int xx=x+dx[j];
            int yy=y+dy[j];
            ti[xx][yy]=min(ti[xx][yy],time);
        }
    }
    bfs();
    cout<<ans;
    return 0;
}

|