#include <iostream>
#include <string>
#include <queue>
#include <algorithm>
#include <vector>
using namespace std;
#define X first
#define Y second
string borad[50];
bool vis[52][52];
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
vector<int> res;
int n,cnt=0;
queue<pair<int,int>> q;
cin >> n;
for(int i=0; i<n; i++) cin >> borad[i];
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(borad[i][j]=='0' || vis[i][j]) continue;
cnt++;
q.push({i,j});
vis[i][j]=1;
int area=0;
while(!q.empty()) {
area++;
pair<int,int> cur=q.front();
q.pop();
for(int idx=0; idx<4; idx++) {
int nx=cur.X+dx[idx];
int ny=cur.Y+dy[idx];
if(nx<0 || nx>=n ||ny<0 || ny>=n) continue;
if(vis[nx][ny] || borad[nx][ny]=='0') continue;
vis[nx][ny]=1;
q.push({nx,ny});
}
}
res.push_back(area);
}
}
sort(res.begin(),res.end());
cout << cnt << '\n';
for (int x:res) cout << x << '\n';
}
To embed this project on your website, copy the following code and paste it into your website's HTML: