为什么最后两个点RE呀!
查看原帖
为什么最后两个点RE呀!
66097
tjhdyhj楼主2020/5/26 20:09

谁有测试点的数据呀?或者哪位大神帮我看看有什么问题呀,多谢!


#include <iostream>
#include <fstream>
using namespace std;
long long i,j,st[100000],xx1[100000],xx2[100000],m,n,l,s[1500][1500],nu=0,w,best=0;
char z;
int bfs(int x, int y)
{
	st[nu]++;
	if (s[x+1][y]==1)
	{
		s[x+1][y]=2;
		bfs(x+1,y);
	}
	if (s[x+1][y+1]==1)
	{
		s[x+1][y+1]=2;
		bfs(x+1,y+1);
	}
	if (s[x][y+1]==1)
	{
		s[x][y+1]=2;
		bfs(x,y+1);
	}
	if (s[x-1][y+1]==1)
	{
		s[x-1][y+1]=2;
		bfs(x-1,y+1);
	}
	if (s[x-1][y]==1)
	{
		s[x-1][y]=2;
		bfs(x-1,y);
	}
	if (s[x-1][y-1]==1)
	{
		
		s[x-1][y-1]=2;
		bfs(x-1,y-1);
	}
	if (s[x][y-1]==1)
	{
		
		s[x][y-1]=2;
		bfs(x,y-1);
	}
	if (s[x+1][y-1]==1)
	{
		
		s[x+1][y-1]=2;
		bfs(x+1,y-1);
	}
}
int main ()
{	

	cin>>n>>m;
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=m;j++)
		{
			cin>>z;
			l=z;
			if (l==42)
			   s[i][j]=1;
            else
               s[i][j]=0;
		}
	}

	for (i=1;i<=n;i++)
	{
		for (j=1;j<=m;j++)
		{
			if (s[i][j]==1)
			{
				s[i][j]=2;
				nu++;
				st[nu]=0;
				bfs(i,j);
			}
		}
	}
	l=1;
	xx1[1]=st[1];
	xx2[1]=st[1];
	for (i=2;i<=nu;i++)
	{
		for (j=1;j<=l;j++)
		{
			if (st[i]==xx1[j])
			{
				xx2[j]=xx2[j]+st[i];
				st[i]=0;
				break;
			}
		}
		if (st[i]!=0)
			{
				l++;
				xx1[l]=st[i];
				xx2[l]=st[i];
			}
	}

	cout<<l<<" ";
	for (i=1;i<=l;i++)
	{
		if (best<xx2[i])
		   best=xx2[i];
	}
	cout<<best;
	
	return 0;
}
2020/5/26 20:09
加载中...