P8673求助
  • 板块灌水区
  • 楼主AC_wmk
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/8/16 20:03
  • 上次更新2023/11/3 03:17:52
查看原帖
P8673求助
588198
AC_wmk楼主2023/8/16 20:03

求大佬帮忙看看 我5-10 MLE 这是代码

#include <cstdio>
#include <queue>
#include <iostream>
using namespace std;
struct stu{
	int a,b,s,w;
};
int n,k;
char g[1001][1001];
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
queue<stu> q;
int bfs()
{
	int x,y,t,o;
	q.push({1,1,0,0});
	while(!q.empty())
	{
		x=q.front().a;
		y=q.front().b;
		t=q.front().s;
		o=q.front().w;
		q.pop();
		if(x==n && y==n) return t;
		for(int i=0,fx,fy;i<4;i++)
		{
			fx=x+d[i][0];
			fy=y+d[i][1];
			if(fx<=0 || fy<=0 || fx>n || fy>n) continue;
			if(g[fx][fy]!='#')
			{
				if(g[fx][fy]=='%')
				{
					g[fx][fy]='.';
					q.push({fx,fy,t+1,k});
				}
				if(g[fx][fy]=='X')
				{
					
					if(o<=0) continue;
					q.push({fx,fy,t+1,o-1});
				}
				if(g[fx][fy]=='.')
				{
					q.push({fx,fy,t+1,o-1});
				}
			}
		}
	
	}
	return -1;
}
int main()
{
	int ck;
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			scanf(" %c",&g[i][j]);
		}
	ck=bfs();
	printf("%d",ck);
	return 0;
}
2023/8/16 20:03
加载中...