시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
클라크(Clarke)는 작은 회사를 운영한다. 업무 특성상 모든 직원은 서로 통화할 수 있도록 휴대전화를 지급받았고, 직원들의 통화 요금은 모두 클라크가 부담한다. 그는 이 요금을 최대한 줄이고 싶다.
통신사는 '프렌즈(friends)' 서비스를 제공한다. 자주 통화하는 두 사람은 '프렌즈' 쌍을 맺을 수 있으며, 이 경우 두 사람 사이의 통화 요금이 더 저렴해진다. 단, 한 사람은 최대 하나의 프렌즈 쌍에만 속할 수 있고, 프렌즈가 아닌 다른 사람과의 통화 요금은 그대로 유지된다.
1분 통화 요금은 프렌즈 쌍이면 F, 그렇지 않으면 R이다. 즉, 두 직원 사이의 M분짜리 통화 하나는 두 사람이 프렌즈 쌍이면 F×M, 아니면 R×M의 비용이 든다. 전체 통화 요금은 모든 통화 비용의 합이다.
지난달 직원들의 통화 목록(누가 누구와 몇 분 통화했는지)이 주어질 때, 모든 직원을 N/2개의 프렌즈 쌍으로 짝지어 회사 전체 통화 요금을 최소로 만들고자 한다. 가능한 최소 총 통화 요금을 구하여라.
첫째 줄에 두 정수 F와 R이 공백으로 구분되어 주어진다 (1≤F≤R≤100). F는 프렌즈 쌍의 1분 통화 요금, R은 프렌즈가 아닌 경우의 1분 통화 요금이다.
둘째 줄에 직원 수를 나타내는 짝수 N이 주어진다 (2≤N≤16). 직원은 1번부터 N번까지 번호가 매겨져 있다.
셋째 줄에 통화 횟수 C가 주어진다 (1≤C≤10000).
이어지는 C개의 줄에는 각각 세 정수 A, B, M이 공백으로 구분되어 주어진다 (1≤A≤N, 1≤B≤N, 1≤M≤100). 이는 직원 A와 B가 M분 동안 통화했음을 뜻한다.
가능한 최소 총 통화 요금을 한 줄에 출력한다. 이는 모든 직원을 N/2개의 프렌즈 쌍으로 가장 알맞게 짝지었을 때 얻을 수 있는 전체 요금의 최솟값이다.