不知道错在哪?感觉我的vector数组失效了
查看原帖
不知道错在哪?感觉我的vector数组失效了
397926
愚末语tenseTL楼主2021/1/22 00:19
#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))无效,感觉已经超出我的认知范围了,求助大佬!

2021/1/22 00:19
加载中...