Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <vector>
- #include <algorithm>
- using namespace std;
- int off_y[] = {-1, 1, 0, 0};
- int off_x[] = {0, 0, -1, 1};
- int N, houseNum;
- int jido[25][25];
- vector<int> ans;
- bool visited[25][25];
- void dfs(int y, int x){
- houseNum++;
- visited[y][x] = true;
- for(int i=0; i<4; i++){
- int yi = y + off_y[i], xi = x + off_x[i];
- if(yi<0 || xi<0 || yi>=N || xi>=N || !jido[yi][xi]) continue;
- if(!visited[yi][xi] && jido[yi][xi])
- dfs(yi, xi);
- }
- }
- int main(){
- scanf("%d", &N);
- for(int i=0; i<N; i++)
- for(int j=0; j<N; j++)
- scanf("%1d", &jido[i][j]);
- for(int i=0; i<N; i++)
- for(int j=0; j<N; j++)
- if(!visited[i][j] && jido[i][j]){
- houseNum = 0;
- dfs(i, j);
- ans.push_back(houseNum);
- }
- sort(ans.begin(), ans.end());
- printf("%d\n", ans.size());
- for(int i=0; i<ans.size(); i++)
- printf("%d\n", ans[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement