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

2022/4/8 6:19:03

本文主要是介绍深夜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;
}

  



这篇关于深夜emo,摸了一发bfs,真想闭关了的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程