CE求助,本地及洛谷IDE均正常
查看原帖
CE求助,本地及洛谷IDE均正常
95170
Tune_楼主2024/5/25 17:29
#include<bits/stdc++.h>
using namespace std;
int n,m,t,fx,fy,sx,sy,a[205][205],b[205][205],dis[205][205];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
struct data
{
	int x,y,val;
// 	const bool operator<(const data &x)const
// 	{
// 		return val<x.val;
// 	}
}k;
void bfs()
{
	queue<data>q;
	memset(dis,-0x3f,sizeof dis);
//	data k;
	k={sx,sy,max(b[sx][sy],0)};
	dis[sx][sy]=max(b[sx][sy],0);
	q.push(k);
	while(!q.empty())
	{
		k=q.front();
		q.pop();
		if(k.x==fx&&k.y==fy)
		{
			printf("Yes\n");
			return;
		}
		if(k.val==0)
			continue;
		if(k.val<dis[k.x][k.y])
			continue;
		for(int i=0;i<4;i++)
		{
			int xx=k.x+dx[i],yy=k.y+dy[i];
			if(xx>0&&xx<=n&&yy>0&&yy<=m&&a[xx][yy]==0)
			{
				int v=max(b[xx][yy],k.val-1);
				if(v>dis[xx][yy])
				{
					q.push({xx,yy,v});
					dis[xx][yy]=v;
				}
			}
		}
	}
	printf("No\n");
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{
		char c;
		cin>>c;
		if(c=='S')
		{
			sx=i;
			sy=j;
		}
		if(c=='T')
		{
			fx=i;
			fy=j;
		}
		if(c=='#')
			a[i][j]=1;
	}
	cin>>t;
	while(t--)
	{
		int x,y,z;
		cin>>x>>y>>z;
		b[x][y]=z;
	}
	bfs();
	return 0;
}

评测记录

2024/5/25 17:29
加载中...