유니온 파인드 예제 - 2
문제 분석
손으로 풀어보기
슈도코드
n(도시의 수) m(여행 계획에 속한 도시의 수)
city(도시 연결 인접 행렬)
find(a):
a가 대표 노드면 a 리턴
아니면 a의 대표 노드 값을 find(parent[a])값으로 저장(재귀 형태)
union(a, b):
a와 b의 대표 노드 찾기
두 원소의 대표 노드끼리 연결
for i 1~n+1 반복:
city 데이터 저장
route(여행 계획 도시 저장 리스트)
parent(대표 노드 저장 리스트)
for n 반복:
parent 대표 노드 자기 자신으로 초기화
for i n 반복:
for j n 반복:
if city[i][j]가 1이면:
union(i, j)
isConnect(연결 여부 변수)
for 2~m 반복:
route에 포함되는 노드들의 대표 노드가 모두 동일한지 확인한 후 isConnect 저장
isConnect 값에 따라 YES 또는 NO 출력코드 구현 - 파이썬
코드 구현 - 자바
Last updated