https://www.hackerrank.com/challenges/torque-and-development/problem
cost를 최소화하면서 모든 도시의 시민들이 도서관을 이용할 수 있게 하는 문제이다. 도서관이 있는 도시에 거주하거나 도서관이 있는 도시와 연결되어 있다면 해당 도시의 시민들이 도서관을 이용할 수 있다.
cost의 정의는 아래와 같다.
도서관과 도로를 짓는 방법은 두 가지로 나눌 수 있다.
1. 모든 도시에 도서관을 짓는다.
2. 모든 도시가 연결될 수 있도록 도로를 만든다.
c_lib가 c_road보다 작다면 1번 방법이 최선의 방법이다.
c_lib가 c_road보다 큰 상식적인 상황이다.
이 문제는 도시와 도시 사이의 도로를 맘대로 연결할 수 없다. 문제에서 주어진 relation만을 활용해서 도로를 지을 수 있다.
따라서 2번 방법을 수행하되 연결할 수 없는 도시 그룹들은 해당 도시 그룹만의 도서관이 필요하다.
최종적인 cost는 아래와 같이 구할 수 있다.
https://github.com/naem1023/codingTest/blob/master/graph/hackerrank-roads-and-libraries.py