#include<bits/stdc++.h>
using namespace std;
int n,m;
int dt[300][300];
int mx[4]={0,1,0,-1},my[4]={1,0,-1,0};
int sum[62500];
int num;
int ans;
void dfs(int x,int y){
num++;
dt[x][y]=0;
for(int i=0;i<4;i++){
if(dt[x+mx[i]][y+my[i]]==1)
dfs(x+mx[i],y+my[i]);
}
}
int main(){
while(cin>>n>>m&&n!=0&&m!=0){
ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>dt[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(dt[i][j]==1){
num=0;
dfs(i,j);
ans++;//我只要计算我联通的就可以拉
sum[num]++;
}
}
}
cout<<ans<<endl;
for(int i=0;i<62500;i++){
if(sum[i]!=0){
cout<<i<<" "<<sum[i]<<endl;
}
}
}
return 0;
}
在给的样例测试中 在本地测试通过,但是提交就出了问题。 不知道错误点在哪里,求助大佬。