언어 배우기
시간 제한1초메모리 제한128 MB
각 소가 구사하는 언어 목록이 주어질 때, 모든 소가 공유 언어를 매개로 연결되도록 하려면 언어 교육을 몇 번 해야 하는지 최솟값을 구한다.
문제
농부 존에게는 번으로 편리하게 번호가 매겨진 소 () 마리가 있고, 역시 번으로 번호가 매겨진 언어 () 개가 있습니다. 소 는 () 개의 언어, 즉 () 를 말할 수 있습니다. 소들이 그리 똑똑하지는 않아서, 모든 소에 대한 의 합은 최대 입니다.
두 소는 공통으로 말할 수 있는 언어가 있어야만 직접 대화할 수 있습니다. 하지만 소들은 필요하면 번역을 거쳐 메시지를 전달할 수 있습니다. 즉, 소 와 는 다음을 만족하는 소들의 열 가 존재할 때에만 대화할 수 있습니다: 와 이 언어 하나를 공유하고, 과 가 언어 하나를 공유하고, 이런 식으로 이어져서, 와 가 언어 하나를 공유합니다.
농부 존은 소들이 더 잘 어울리길 바라기 때문에, 모든 소가 다른 어떤 소와도 서로 소통할 수 있게 하고 싶습니다. 그는 책을 사서 자신의 소 중 아무에게나 원하는 언어를 가르칠 수 있습니다. 존은 꽤 알뜰한 농부라서, 모든 소가 서로 대화할 수 있게 만드는 데 필요한 책의 최소 개수만큼만 사려고 합니다. 이 최소 책 개수를 구하도록 도와주세요.
예를 들어, Alberta, Bessie, Contessa 라는 소 세 마리와 #1, #2, #3 으로 표시된 언어 세 개가 있다고 합시다. Alberta 는 언어 #2 와 #3 을, Bessie 는 언어 #2 를, Contessa 는 언어 #1 을 말할 수 있습니다. 지금은 Alberta 와 Bessie 는 서로 대화할 수 있지만 Contessa 는 혼자 남겨져 있습니다.
#1 #2 #3
Alberta x x
Bessie x
Contessa x
존이 Contessa 에게 언어 #2 를 가르치는 책을 사 주면, 세 소 모두 언어 #2 를 공유하게 되어 서로 소통할 수 있습니다. (언어 #3 을 가르쳐도 되는데, 그러면 Contessa 가 Alberta 를 거쳐 Bessie 에게 닿을 수 있기 때문입니다.) 어느 쪽이든 여기서는 정확히 책 한 권이 필요합니다.
입력
- 첫째 줄: 공백으로 구분된 두 정수 과 .
- 째 줄: 째 줄은 소 가 말할 수 있는 언어를 개의 공백으로 구분된 정수로 나타냅니다: .
출력
- 정수 하나: 모든 소가 (직접 또는 간접적으로) 서로 소통할 수 있게 하기 위해 존이 사야 하는 책의 최소 개수.