2TLE求助!
  • 板块P1141 01迷宫
  • 楼主_JG233_
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/2/3 15:40
  • 上次更新2023/10/28 09:46:19
查看原帖
2TLE求助!
384746
_JG233_楼主2022/2/3 15:40

这里是测评记录

以下是代码:

#include <iostream>
#include <queue>
using namespace std;
const int MAXN = 1000035; 
struct Node
{
	int x;
	int y;
}qp[MAXN];
queue<Node> q;
int n,m,ans,map[3535][3535],b[3535][3535],op2=1;
int dx[35] = {0,-1,1,0,0};
int dy[35] = {0,0,0,-1,1};
void bfs(int x,int y)
{
	Node op;
	b[x][y] = 1;
	op.x = x,op.y = y,q.push(op);
	while(!q.empty())
	{
		Node tmp = q.front();
		for(int i=1;i<=4;i++)
		{
			Node new_node = tmp;
			new_node.x += dx[i],new_node.y += dy[i];
			if(new_node.x >= 1 && new_node.y >= 1 && new_node.x <= n && new_node.y <= n && b[new_node.x][new_node.y] == 0 && map[new_node.x][new_node.y] != map[tmp.x][tmp.y])
			{
				q.push(new_node);
				b[new_node.x][new_node.y] = 1,qp[op2].x = new_node.x,qp[op2].y = new_node.y,op2++;
				ans++;
			}
		}
		q.pop();
	}
	b[x][y] = ans;
	for(int i=1;i<op2;i++) b[qp[i].x][qp[i].y] = ans,qp[i].x = 0,qp[i].y = 0;
}
int main()
{
	cin >> n >> m;
	for(int i=1;i<=n;i++)
	{
		string s;
		cin >> s;
		for(int j=0;j<s.size();j++) map[i][j+1] = s[j] - '0';
	}
	for(int i=1;i<=m;i++)
	{
		int x = 0,y = 0;
		cin >> x >> y;
		if(b[x][y] != 0) cout << b[x][y] << endl;
		else
		{
			ans = 1;
			bfs(x,y);
			cout << b[x][y] << endl;	
		} 
	}
	return 0;
}
2022/2/3 15:40
加载中...