其他分享
首页 > 其他分享> > 深夜emo,摸了一发bfs,真想闭关了

深夜emo,摸了一发bfs,真想闭关了

作者:互联网

#include<bits/stdc++.h>
#define rep(i,x,n) for(int i=x;i<=n;i++)
using namespace std;

struct node{
int x,y;
};

int n;
int f[500][500];//记录步长和判重 
int g[500][500];
int dx[]={1,0,-1,0},dy[]={0,1,0,-1};

void bfs()
{
	queue<node> q;
	q.push({1,1});
	f[1][1]=1;
	int x,y;
	while(!q.empty())
	{
		auto w=q.front();
		q.pop();
		x=w.x,y=w.y;
		//cout << x << ' ' << y << '\n';
		if(g[x][y]==0x3f3f3f3f) 
		{
			cout << f[x][y]-1;
			exit(0);
		}
		rep(i,0,3)
		{
			int nx=x+dx[i],ny=y+dy[i];
			if(!f[nx][ny]&&nx>=1&&ny>=1&&g[nx][ny]>f[x][y]) 
			{
				q.push({nx,ny});
				f[nx][ny]=f[x][y]+1;
			}
		}
	}
	cout << -1;
}

int main()
{
	memset(g,0x3f,sizeof g);//初始化地图 
	
	cin >> n;
	rep(i,1,n)
	{
		int x,y,t;
		cin >> x >> y >> t;
		g[1+x][1+y]=min(t,g[1+x][1+y]);
		rep(i,0,3) g[1+x+dx[i]][1+y+dy[i]]=min(t,g[1+x+dx[i]][1+y+dy[i]]);//设置好时间 
	}	
	bfs();
	return 0;
}

  

标签:nx,cout,int,emo,bfs,ny,闭关,rep
来源: https://www.cnblogs.com/hssliuscat/p/16115133.html