10???????
  • 板块P1141 01迷宫
  • 楼主Hf_Poem
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/4/26 22:55
  • 上次更新2023/10/23 17:27:08
查看原帖
10???????
750476
Hf_Poem楼主2023/4/26 22:55
#include<bits/stdc++.h>
#define int long long
using namespace std;
queue <int> x;
queue <int> y;
queue <int> v;
int ans,n,m,sx,sy,a[1010][1010],s[1010][1010];
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
inline void bfs(int sx,int sy){
	// ans++;
	// Push 初始值 
	x.push(sx);
	y.push(sy);
	v.push(a[sx][sy]);
	// 枚举队列中每个元素 
	while(!x.empty()){
		// 取头元素并且在队列中删除头元素 
		int xx,yy,vv;
		xx=x.front();
		yy=y.front();
		vv=v.front();
		x.pop();
		y.pop();
		v.pop();
		// 标记头元素对应的数组 
		s[xx][yy]=1;
		// 扩展 
		for(int i=0;i<4;i++)
		{
			int nx=xx+dx[i],ny=yy+dy[i];
			if(a[nx][ny]!=vv&&s[nx][ny]==0&&nx>=1&&nx<=n&&ny>=1&&ny<=n){
				// 满足条件,则push入队列 
				x.push(nx);
				y.push(ny);
				v.push(a[nx][ny]);
		    }
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		string zc;
		cin>>zc;
		for(int j=1;j<=n;j++)
			a[i][j]=zc[j]-'0';
    }
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;++j)
			for(int k=1;k<=n;++k)
				s[j][k]=0;
		cin>>sx>>sy;
		bfs(sx,sy);
		ans=0;
		for (int j=1;j<=n;++j)
			for(int k=1;k<=n;++k)
				ans+=s[j][k];
		cout<<ans<<"\n";
	}
	return 0;
}

怎么会是10呢(挠头

甚至教练还帮忙改了一遍

求佬

2023/4/26 22:55
加载中...