求助本题输入
  • 板块P1767 家族
  • 楼主x1489631649
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/12/3 20:56
  • 上次更新2023/12/4 11:03:48
查看原帖
求助本题输入
780505
x1489631649楼主2023/12/3 20:56
#include <bits/stdc++.h>
using namespace std;
int vis[1000][1000],l[1000],n,ans;
int a[1000][1000];
struct node{
	int x,y;
}q[100000];
void bfs(int x,int y)
{
	ans++;
	int t,h;
	t=h=1;
	q[h].x=x;
	q[h].y=y;
	vis[q[h].x][q[h].y]=1;
	while(h<=t)
	{
		int nx1=q[h].x+1,ny1=q[h].y;
		int nx2=q[h].x-1,ny2=q[h].y;
		int nx3=q[h].x,ny3=q[h].y+1;
		int nx4=q[h].x,ny4=q[h].y-1;
		if(nx1<=n&&nx1>=1&&ny1<=l[q[h].x]&&ny1>=1&&vis[nx1][ny1]==0&&a[nx1][ny1]==0)
		{
			t++;
			q[t].x=nx1;
			q[t].y=ny1;
			vis[nx1][ny1]=1;
		}
		if(nx2<=n&&nx2>=1&&ny2<=l[q[h].x]&&ny2>=1&&vis[nx2][ny2]==0&&a[nx2][ny2]==0)
		{
			t++;
			q[t].x=nx2;
			q[t].y=ny2;
			vis[nx2][ny2]=1;
		}
		if(nx3<=n&&nx3>=1&&ny3<=l[q[h].x]&&ny3>=1&&vis[nx3][ny3]==0&&a[nx3][ny3]==0)
		{
			t++;
			q[t].x=nx3;
			q[t].y=ny3;
			vis[nx3][ny3]=1;
		}
		if(nx4<=n&&nx4>=1&&ny4<=l[q[h].x]&&ny4>=1&&vis[nx4][ny4]==0&&a[nx4][ny4]==0)
		{
			t++;
			q[t].x=nx4;
			q[t].y=ny4;
			vis[nx4][ny4]=1;
		}
		h++;
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		char s[250];
		cin.getline(s,250);
		l[i]=strlen(s);
		for(int j=1;j<=l[i];j++)
		{
			if(s[j-1]==' '||s[j-1]=='*')
				a[i][j]=1;
			else a[i][j]=0;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			cout<<a[i][j];
		cout<<endl;
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=l[i];j++)
			if(vis[i][j]==0&&a[i][j]==0)
				bfs(i,j);
	cout<<ans;
	return 0;
}
2023/12/3 20:56
加载中...