2667호: 복잡한 번호 매기기(acmicpc.net)
2667호: 복소수
좋다<图1>그림과 같이 사각형 맵이 있습니다.
1은 집이 있는 곳, 0은 집이 없는 곳을 의미합니다.
철수는 이 지도를 가지고 집들이 연결된 집합체인 단지를 정의하고 그 단지에 번호를 매겼다.
여성
www.acmicpc.net
가져오기 대기열
dx = (-1, 1, 0, 0)
다이 = (0, 0, -1, 1)N = 정수(입력())
도달=()범위 내 i(N)의 경우:
임시 = 목록(map(int,input()))
일정 추가(임시)que = queue.Queue()
bfs()를 정의합니다:
sub_cnt = 0
동안 (que.qsize()!
=0):
x,y = que.get()
sub_cnt+=1
나를 위해 range(4):
cx = x+dx(i)
cy = y+dy(i)
0<=cx인 경우
if arr(cx)(cy)==1: # 동일한 병인 경우
arr(cx)(cy) = 0 #접근 처리
que.put((cx,cy))
sub_cnt 반환카운트 = 0
하위 목록 = ()범위 내 i(N)의 경우:
범위(N)의 j에 대해:
if arr(i)(j)==1: # 방문한 단지를 0으로 간주하여 1이면 다른 단지
count+=1 # 카운트만
arr(i)(j)=0 #접근 처리
que.put((i,j))
sub_list.append(bfs()) # 단지에 속한 아파트 수sub_list.sort() # 오름차순 정렬
인쇄(카운트)
범위 i(len(sub_list))의 경우:
print(서브리스트(i))
시간 복잡도
오(n^2)