80pts求助,TLE+MLE
查看原帖
80pts求助,TLE+MLE
1576771
qihong07楼主2025/7/21 17:18
#include<bits/stdc++.h> 
using namespace std;
char a[110][110];
bool vis[110][110];
struct node
{
	int x;
	int y;
};
node d[]={{1,1},{1,-1},{-1,1},{-1,-1},{0,1},{1,0},{-1,0},{0,-1}};
void bfs(int n,int m,int x,int y)
{
	queue<node> q;
	q.push((node){x,y});
	while(!q.empty()) 
	{
		node tmp=q.front();
		vis[tmp.x][tmp.y]=1;
//		cout<<tmp.x<<" "<<tmp.y<<"\n";
		q.pop();
		for(int i=0;i<8;i++)
		{
			if(tmp.x+d[i].x>=1&&tmp.x+d[i].x<=n
			&&tmp.y+d[i].y>=1&&tmp.y+d[i].y<=m)
			{
				if(!vis[tmp.x+d[i].x][tmp.y+d[i].y]&&
				a[tmp.x+d[i].x][tmp.y+d[i].y]=='W')
				{
					q.push((node){tmp.x+d[i].x,tmp.y+d[i].y});
//					cout<<tmp.x+d[i].x<<" "<<tmp.y+d[i].y<<"\n";
				}
			}
			
		}
	} 
//	cout<<"-------------------------------\n";
}
int main()
{
	int n,m,ans=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		scanf("%s",a[i]+1);
	}
//	for(int i=0;i<8;i++)
//	{
//		cout<<d[i].x<<" "<<d[i].y<<"\n";
//	} 
//	cout<<"----------------------------------------------------\n";
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(!vis[i][j]&&a[i][j]=='W')
			{
				ans++;
//				cout<<i<<" "<<j<<"\n";
				bfs(n,m,i,j);
			}
		}
	}
	cout<<ans;
}
2025/7/21 17:18
加载中...