본문 바로가기
CBSH Algorithm League/2019 Season 1

2019 CAL Season 1 #D 풀이

by EXE_김건형 2019. 9. 21.

문제 원본 : https://www.acmicpc.net/problem/1976

 

1976번: 여행 가자

동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인지 알아보자. 물론 중간에 다른 도시를 경유해서 여행을 할 수도 있다. 예를 들어 도시가 5개 있고, A-B, B-C, A-D, B-D, E-A의 길이 있고, 동혁이의 여행 계획이 E C B C D 라면 E-A-B-C-B-C-B-D라는 여행경로를 통해 목적을 달성할

www.acmicpc.net

출제자 : 31기 김건형

 

맞은 동아리

: 로고스 / EXE&GAIA

정답 소스코드

풀이법은 다음과 같습니다.

Union-Find 알고리즘을 사용하여 도시와 도시 사이 연결정보를 저장합니다.

모든 길에 대한 입력을 받고 연결 정보를 배열에 저장합니다. (본문에서 int형 배열 root)

연결되었다는 정보가 주어졌을 때 연결된 묶음 중 최상위 도시와 연결되었다고 표시함으로써 구현할 수 있습니다.

위와 같은 과정을 반복하여 연결 정보를 모두 저장한 후 여행 계획으로 주어지는 도시들의 root를 비교합니다.

만약 여행계획에 있는 임의의 두 도시에 대하여 가리키는 root가 서로 다르다면 여행 계획은 성립할 수 없습니다.

위와 같은 방법으로 원하는 정답을 얻을 수 있습니다.

'CBSH Algorithm League > 2019 Season 1' 카테고리의 다른 글

2019 CAL Season 1 #F 풀이  (0) 2019.09.23
2019 CAL Season 1 #E 풀이  (0) 2019.09.21
2019 CAL Season 1 #C 풀이  (0) 2019.09.21
2019 CAL Season 1 #B 풀이  (0) 2019.09.21
2019 CAL Season 1 #A 풀이  (0) 2019.09.21

댓글