70分tle,蒟蒻求调
查看原帖
70分tle,蒟蒻求调
1266289
xiaoxiao_liang楼主2024/7/26 18:19

用的广搜


#include <bits/stdc++.h>
using namespace std;
const int maxn=1001;
int n,m,wz[4][2]={{1,0},{-1,0},{0,1},{0,-1}},ans=1;
char a[maxn][maxn];
int vis[1001][1001]={};
struct node{
	int x;
	int y;
}q[maxn*maxn];
void bfs(int kx,int ky){
	int head=1,tail=1;
	q[tail].x=kx;
	q[tail].y=ky;
	vis[kx][ky]=1;
	tail++;
	while(head<tail){
		int x0=q[head].x,y0=q[head].y;
		for(int i=0;i<4;i++){
			int nx=x0+wz[i][0],ny=y0+wz[i][1];
			if(nx>=0 && nx<n && ny>=0 && ny<n && vis[nx][ny]!=1 && a[nx][ny]!=a[x0][y0]){
				q[tail].x=nx;
				q[tail].y=ny;
				vis[nx][ny]=1;
				ans++;
				tail++;
			} 
		}
		head++;
	}
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			cin>>a[i][j];
	for(int i=1;i<=m;i++){
		int arrx,arry;
		ans=1;
		cin>>arrx>>arry;
		arrx--;arry--;
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				vis[i][j]=0;
		bfs(arrx,arry);
		cout<<ans<<endl;
	}
	return 0;
}

2024/7/26 18:19
加载中...