求助!出现了一些玄学性的错误
#include<bits/stdc++.h>
using namespace std;
long long n,m,num,id[1510][1510],l,r,xx,yy,b[2250005],c[2250005],ans,maxn;
char ch[1505][1505];
int dx[8]={0,1,1,1,0,-1,-1,-1};
int dy[8]={1,1,0,-1,-1,-1,0,1};
struct node{
long long x,y;
}a[2250010];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>ch[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;i<=m;j++){
if(ch[i][j]=='*'){
num++;
l=1;r=1;
a[1].x=i;
a[1].y=j;
id[i][j]=num;
while(l<=r){
cout<<l<<"��"<<a[l].x<<" "<<a[l].y<<endl;
for(int i=0;i<8;i++){
xx=a[l].x+dx[i];
yy=a[l].y+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m){
if(ch[xx][yy]=='*'){
if(id[xx][yy]==0){
r++;
a[r].x=xx;
a[r].y=yy;
id[xx][yy]=num;
}
}
}
}
l++;
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(id[i][j]!=0){
b[id[i][j]]++;
}
}
}
for(int i=1;i<=num;i++){
c[b[i]]+=b[i];
}
for(int i=1;i<=2250000;i++){
if(c[i]>0){
ans++;
maxn=max(maxn,c[i]);
}
}
cout<<ans<<" "<<maxn;
return 0;
}