dfs70分TLE
  • 板块P1141 01迷宫
  • 楼主liugang_cn
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/1/24 10:58
  • 上次更新2025/1/24 14:46:12
查看原帖
dfs70分TLE
1288104
liugang_cn楼主2025/1/24 10:58
#include<bits/stdc++.h>
using namespace std;
int a[1005][1005];
bool vis[1005][1005];
int dx[5]={0,-1,0,0,1};
int dy[5]={0,0,-1,1,0};
int n,m;
string x;
int l;
int sum;
void dfs(int x,int y){
	sum++;
	for(int i=1;i<=4;i++){
		int p=x+dx[i];
		int q=y+dy[i];
		if(a[p][q]!=a[x][y]&&vis[p][q]==0&&p>=1&&p<=n&&q>=1&&q<=l){
			vis[p][q]=1;
			dfs(p,q);
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>x;
		l=x.size();
		for(int j=1;j<=l;j++) a[i][j]=x[j-1]-'0';
	}
	for(int p=1;p<=m;p++){
		int i,j;
		cin>>i>>j;
		vis[i][j]=1;
		dfs(i,j);
		cout<<sum<<endl;
		sum=0;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=l;j++) vis[i][j]=0;
	}
} 
2025/1/24 10:58
加载中...