不知道错在哪?感觉我的vector数组失效了

P2895 [USACO08FEB] Meteor Shower S

愚末语tenseTL @ 2021-01-22 00:19:22

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define INF 0x3f3f3f
#define pub push_back
#define pob pop_back
#define MAXN 305
#define time times
int f1[5]={1,-1,0,0};
int f2[5]={0,0,1,-1};
int color[MAXN][MAXN];
int flag[MAXN][MAXN];
vector<pair<int,int> >v[1005];
queue<pair<int,int> > q;
int time=0;
int bfs()
{
    q.push(make_pair(0,0));
    for(int i=0;i<v[0].size();i++)
    {
        pair<int,int >t=v[0][i];
        int x=t.first,y=t.second;
        flag[x][y]=0;
        for(int i=0;i<4;i++)
        {
            flag[x+f1[i]][y+f2[i]]=0;
         } 
    }
    while(!q.empty())
    {   
        pair<int,int> p=q.front();q.pop();
        if(color[p.first][p.second]==1&&flag[p.first][p.second]==1)return time;
        for(int i=0;i<v[time+1].size();i++)
        {
            pair<int,int >t=v[time+1][i];
            int x=t.first,y=t.second;
            flag[t.first][t.second]=0;
            for(int i=0;i<4;i++)
            {
                flag[x+f1[i]][y+f2[i]]=0;
            }
        }   
        int x=p.first,y=p.second;
        for(int i=0;i<4;i++)
        {
            x=x+f1[i];y=y+f2[i];
            if(flag[x][y]==0)continue;
            else q.push(make_pair(x,y));
        }
    }
    return -1;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    for(int i=0;i<=MAXN;i++)
    for(int j=0;j<=MAXN;j++)
    {color[i][j]=1;flag[i][j]=1;}
    int M;
    cin>>M;
    while(M--)
    {
        int x,y,t;
        cin>>x>>y>>t;
        v[t].push_back(make_pair(x,y));
        color[x][y]=0;
        for(int i=0;i<4;i++)
        {
            if(x+f1[i]>=0&&y+f2[i]>=0)
            color[x+f1[i]][y+f2[i]]=0;
        }
    }
    cout<<bfs()<<endl;
    return 0;
 } 

在运行的时候,输入时v[t].pub(make_pair(x,y))无效,感觉已经超出我的认知范围了,求助大佬!


by WanderingTrader @ 2021-01-22 08:38:34

本来就不需要vector好吧@愚末语tenseTL


|