谁有测试点的数据呀?或者哪位大神帮我看看有什么问题呀,多谢!
#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;
}