求助WA#9
查看原帖
求助WA#9
393977
w13737245882楼主2022/4/9 20:18
#include<bits/stdc++.h>
using namespace std;
int  o,x[100001]={0},y[100001]={0},a,b,c,d,n,m,i,ans[1001][1001]={0},mp[1100][1100]={0},used[1001][1001]={0},fy[4]={0,-1,1,0},fx[4]={1,0,0,-1};
queue<int>q;//记录横坐标 
queue<int>q1;//记录纵坐标 
int main()
{
	/*freopen("01.in","r",stdin);
	freopen("01.out","w",stdout);*/
	cin>>n>>m;
	for(i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			scanf("%1d",&mp[i][j]);
	}
	for(i=1;i<=m;i++)
	{
		o=1;
		cin>>a>>b;
		used[a][b]=1;
		if(ans[a][b]>0)
		{
			cout<<ans[a][b]<<endl;
			continue;
		}
		q.push(a);
		q1.push(b);
		while(!q1.empty())
		{
			for(int k=0;k<=3;k++)
			{
				c=q.front()+fx[k];
				d=q1.front()+fy[k];
				if(c>0&&c<=n&&d>0&&d<=n&&used[c][d]==0&&mp[c][d]!=mp[q.front()][q1.front()])
				{
					used[c][d]=1;
					x[o]=c;
					y[o]=d;
					o++;
					q.push(c);
					q1.push(d);
				}
			}
			q.pop();
			q1.pop();
		}
		for(int j=1;j<=o-1;j++)
		{
			ans[x[j]][y[j]]=o;
		}
		ans[a][b]=o;
		cout<<o<<endl;
	}
	return 0;
}
2022/4/9 20:18
加载中...