4个测试点超时,剩下都对,求调
  • 板块P1141 01迷宫
  • 楼主isalpha
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/15 21:56
  • 上次更新2024/5/16 13:09:20
查看原帖
4个测试点超时,剩下都对,求调
1124758
isalpha楼主2024/5/15 21:56
#include<bits/stdc++.h>
using namespace std;
char s[1001][1001];
int mark[1001][1001];
int fx[4]={-1,1,0,0},fy[4]={0,0,-1,1};
int ans,n,m;
void dfs(int x,int y)
{
	if(x<1||x>n)
	{
		ans--;
	    return;
	}
	if(y<1||y>n)
	{
		ans--;
		return;
	}
	for(int i=0;i<=3;i++)
	{
		if(s[x+fx[i]][y+fy[i]]!=s[x][y]&&mark[x+fx[i]][y+fy[i]]==0)
		{
			ans++;
			mark[x+fx[i]][y+fy[i]]++;
			dfs(x+fx[i],y+fy[i]);
		}
	}
	return;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	cin>>s[i][j];
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		for(int k=1;k<=n;k++)
		mark[j][k]=0;
		int x,y;
		cin>>x>>y;
		mark[x][y]=1;
		ans=0;
		dfs(x,y);
		cout<<ans+1<<'\n';
	}
}
2024/5/15 21:56
加载中...