70pts求救
  • 板块P1141 01迷宫
  • 楼主nannangua
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/22 16:44
  • 上次更新2024/7/22 17:30:29
查看原帖
70pts求救
1101010
nannangua楼主2024/7/22 16:44

全都是TLE的点

#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int maxn=1e3+3;
char a[maxn][maxn];
int vis[maxn][maxn],ans=0;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
int n,T;
bool check(int x,int y)
{
	return x<=n && x>=1 && y<=n && y>=1;
}
void dfs(int x,int y)
{
	ans++;
	vis[x][y]=1;
	for(int i=0;i<4;i++)
	{
		int tx=x+dx[i];
		int ty=y+dy[i];
		if(check(tx,ty) && vis[tx][ty]==0)
		{
			if((a[x][y]=='1' && a[tx][ty]=='0') || (a[x][y]=='0' && a[tx][ty]=='1')) dfs(tx,ty);
		}
	}
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>T;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>a[i][j];
		}
	}
	int a,b;
	while(T--)
	{
		ans=0;
		memset(vis,0,sizeof(vis));
		cin>>a>>b;
		dfs(a,b);
		cout<<ans<<endl;
	}
	return 0;
}
2024/7/22 16:44
加载中...