编译失败

P2895 [USACO08FEB] Meteor Shower S

Chinami_Nagisa @ 2024-08-14 14:12:47

样例已过,编译器可运行,但是CE

#include <iostream>
#include <queue>
#include <utility>
#include <vector>
using namespace std;
int M,T;
struct star
{
    int x;
    int y;
    int t;
} a[10010];
vector<int> time[1010];   //某时间对应的火星是第几个
typedef pair<int,int> PII;
queue<PII> q;
int st[310][310];
int d[310][310];
PII curr;
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
void bfs(int x0,int y0)
{
    q.push({x0,y0});
    st[x0][y0]=2;
    while(!q.empty())
    {
        PII temp=q.front();
        q.pop();
        T=d[temp.first][temp.second]+1;
        for(int j=0;j<time[T].size();j++) //标记下一个时刻烧焦和撞击的点
            {
                st[a[time[T][j]].x][a[time[T][j]].y]=2;
                for(int k=0;k<4;k++)
                    if(a[time[T][j]].x+dx[k]>=0 && a[time[T][j]].y+dy[k]>=0)
                        st[a[time[T][j]].x+dx[k]][a[time[T][j]].y+dy[k]]=2;
            }
        for(int i=0;i<4;i++)
        {
            int x1=temp.first+dx[i];
            int Y1=temp.second+dy[i];
            if(x1<0||Y1<0) continue;
            else if(st[x1][Y1]==2) continue;
            else if(st[x1][Y1]==0) return;
            else {
                q.push({x1,Y1});
                st[x1][Y1]=2;
                d[x1][Y1]=d[temp.first][temp.second]+1;
            }
        }
    }
    T=-1;
    return;
}
int main(){
    cin>>M;
    for(int i=1;i<=M;i++)    //第i颗流星
    {
        cin>>a[i].x>>a[i].y>>a[i].t;   //存流星信息
        time[a[i].t].push_back(i);     //第a[i].t时刻的流星i
        for(int j=0;j<4;j++)
            if(a[i].x+dx[j]>=0 && a[i].y+dy[j]>=0)
                st[a[i].x+dx[j]][a[i].y+dy[j]]=1;   //标记危险点
        st[a[i].x][a[i].y]=1;
    }
    if(!st[0][0]) {cout<<0;return 0;}
    bfs(0,0);
    cout<<T;
    return 0;
}

by YWHHDJSer @ 2024-08-14 14:44:27

起名字起重复了,vector<int> time[1010]time在C++头文件里被用过了。


by YWHHDJSer @ 2024-08-14 14:46:51

口误了,是关键字。


|