28分在线求助
查看原帖
28分在线求助
661980
haokee楼主2022/8/13 20:54

大佬们,我这个蒟蒻的代码又错惹,请各位大佬们帮忙看看,深表感谢。

#include<bits/stdc++.h>
using namespace std;
int m,when[305][305],x,y,t,dx[4]={0,1,0,-1},dy[]={1,0,-1,0};
bool mp[305][305]={true};

struct haokee
{
	int x,y,step;
};

queue<haokee> q; 

int main(int argc,char *argv[])
{
	cin >> m;
	memset(when,-1,sizeof(when));
	for(int i=1;i<=m;++i)
	{
		cin >> x >> y >> t;
		if(when[x][y]==-1||t<when[x][y])
		{
			when[x][y] = t;
		}
		for(int j=0;j<4;++j)
		{
			int tmpx=x+dx[j],tmpy=y+dy[j];
			if((when[tmpx][tmpy]==-1||t<when[tmpx][tmpy])&&when[tmpx][tmpy]==-1&&tmpx>=0&&tmpy>=0)
			{
				when[tmpx][tmpy] = t;
			}
		} 
	}
	q.push((haokee){0,0,0});
	while(!q.empty())
	{
		haokee tmp = q.front();
		for(int i=0;i<4;++i)
		{
			int nx=tmp.x+dx[i],ny=tmp.y+dy[i];
			if((tmp.step+1<when[nx][ny]||when[nx][ny]==-1)&&nx>=0&&nx<=300&&ny>=0&&ny<=300&&mp[nx][ny]==false)
			{
				if(when[nx][ny]==-1)
				{
					cout << tmp.step+1;
					exit(0);
				}
				mp[nx][ny] = true;
				q.push((haokee){nx,ny,tmp.step+1});
			}
		}
		q.pop();
	}
	cout << "-1";
	return 0;
}

谢谢各位大佬!!!

2022/8/13 20:54
加载中...