Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include<algorithm>
  4. #include<vector>
  5. using namespace std;
  6. int N;
  7. int map[25][25];
  8. int cnt = 0; //번호 하나당 총 아파트 개수 누적
  9. bool visited[25][25];
  10. vector<int> v;
  11. int dir[4][2] = { {-1,0},{0,1},{1,0},{0,-1} };
  12.  
  13. void dfs(int x, int y) {
  14.  
  15. for (int i = 0; i < 4; i++) {
  16.  
  17. int nx = x + dir[i][0];
  18. int ny = y + dir[i][1];
  19.  
  20. if (0 <= nx && nx < N && 0 <= ny && ny < N) {
  21. if (visited[nx][ny] == false && map[nx][ny] == 1) {
  22. visited[nx][ny] = true;
  23. cnt++;
  24. dfs(nx, ny);
  25. }
  26. }
  27.  
  28. }
  29. }
  30.  
  31. int main(void)
  32. {
  33. cin.tie(NULL);
  34. cout.tie(NULL);
  35. cin >> N;
  36. for (int i = 0; i < N; i++) {
  37. for (int j = 0; j < N; j++) {
  38. scanf_s("%1d", &map[i][j]); //입력이 특이하기 때문에 #include <cstdio>
  39.  
  40. //cin >> map[i][j];
  41. }
  42. }
  43. for (int i = 0; i < N; i++) {
  44. for (int j = 0; j < N; j++) {
  45. if (visited[i][j] == false && map[i][j] == 1) {
  46.  
  47. visited[i][j] = true;
  48. cnt++;
  49.  
  50. dfs(i, j);
  51. v.push_back(cnt);
  52. cnt = 0;
  53. }
  54. }
  55. }
  56. cout << v.size() << "\n";
  57. sort(v.begin(), v.end());
  58. for (int i = 0; i < v.size(); i++) {
  59. cout << v[i] << "\n";
  60.  
  61. }
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement