인접한 구역 사이 울타리를 뜯어 모든 구역이 이어지도록 하고 뜯어낸 길이 합을 가장 작게 만듭니다.
보통7최소 신장 트리그리디정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB농부 존은 자기 소 상당수가 광장 공포증이 있다는 것을 알아차렸다. 넓게 트인 곳을 무서워한다는 뜻이다. 소가 풀을 뜯을 때 덜 무서워하도록, 존은 큰 밭에 남북 방향의 세로 울타리와 동서 방향의 가로 울타리를 세워 작은 구역 여러 개로 나누었다.
큰 밭은 (0,0)과 (A,B)를 마주 보는 두 꼭짓점으로 하는 직사각형이다. 존은 서로 다른 위치 a1,…,an에 세로 울타리 n개를 세웠고 (0<ai<A), 위치 ai의 울타리는 (ai,0)에서 (ai,B)까지 이어진다. 또 위치 b1,…,bm에 가로 울타리 m개를 세웠고 (0<bi<B), 위치 bi의 울타리는 (0,bi)에서 (A,bi)까지 이어진다. 세로 울타리는 가로 울타리와 모두 교차하므로 밭은 (n+1)(m+1)개의 구역으로 나뉜다.
그런데 존은 울타리에 문을 내는 것을 완전히 잊었다. 소는 자기가 갇힌 구역을 벗어나 밭 전체를 돌아다니지 못한다. 존은 울타리 일부를 걷어내서 이 문제를 해결하려고 한다. 이웃한 구역 쌍을 골라 그 사이를 막고 있는 울타리를 전체 길이만큼 걷어내고, 이렇게 뚫은 통로만으로 소가 밭 어디든 갈 수 있게 만들려고 한다.
예를 들어 존이 다음과 같은 울타리 배치에서 시작한다고 하자.
+---+--+
| | |
+---+--+
| | |
| | |
+---+--+
그러면 이렇게 열 수 있다.
+---+--+
| |
+---+ +
| |
| |
+---+--+
존이 걷어내야 하는 울타리의 최소 총 길이를 구하여라.
첫째 줄에 A, B, n, m이 주어진다 (1≤A,B≤109, 0≤n≤25000, 0≤m≤25000). 다음 n개의 줄에 a1,…,an이 한 줄에 하나씩 주어지고, 그 뒤 m개의 줄에 b1,…,bm이 한 줄에 하나씩 주어진다. ai는 서로 다르고 bi도 서로 다르다.
걷어내야 하는 울타리의 최소 총 길이를 출력한다. 이 값은 32비트 정수 범위를 넘을 수 있다.