-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2667.py
More file actions
54 lines (37 loc) · 886 Bytes
/
Copy path2667.py
File metadata and controls
54 lines (37 loc) · 886 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import sys
N = int(sys.stdin.readline())
board = []
count = [0]
for i in range(N):
board.append(sys.stdin.readline().rstrip())
new_board = [[0] * N for i in range(N)]
def solve(new_board,board,y,x,idx):
if y < 0 or y >= N or x < 0 or x >= N:
return
if int(board[y][x]) == 0:
return
if int(new_board[y][x]) != 0:
return
if int(board[y][x]) == 1:
new_board[y][x] = idx
count[-1] += 1
flag = 1
solve(new_board,board,y-1,x,idx)
solve(new_board,board,y+1,x,idx)
solve(new_board,board,y,x-1,idx)
solve(new_board,board,y,x+1,idx)
return flag
number = 1
for i in range(N):
for j in range(N):
idx = solve(new_board,board,i,j,number)
if idx == 1:
number += 1
count.append(0)
# for i in range(N):
# print(new_board[i])
count.pop()
count.sort()
print(number-1)
for i in range(number-1):
print(count[i])