愚末语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