조깅 코스
시간 제한1초메모리 제한128 MB
집을 잎으로 하는 트리의 거리 행렬이 주어질 때, 이동 시간(거리 곱하기 r 더하기 지나는 내부 노드 수 곱하기 t)이 가장 긴 집 쌍을 찾는다.
문제
조깅을 즐기는 조(Joe)는 매일 아침 동네를 힘차게 달린다. 동네에는 번부터 번까지 번호가 매겨진 집 채가 있으며, 도로로 연결되어 있어 임의의 두 집 사이에는 정확히 하나의 경로만 존재한다. 즉 도로망은 형태를 알 수 없는 하나의 트리를 이루며, 개의 잎(leaf) 노드가 각 집이고, 도로가 갈라지거나 합쳐지는 교차로를 나타내는 내부 노드가 최대 개(그보다 적을 수도 있음) 있다.
조가 한 집에서 다른 집까지 달릴 조깅 코스를 짜 주자. 베테랑인 조는 코스가 가능한 한 오래 걸리기를 원한다. 도로를 따라 잰 집끼리의 거리(미터) 행렬, 조가 미터를 달리는 데 걸리는 시간 초, 교차로 하나를 지나는 데 걸리는 시간 초가 주어진다. 한 코스의 총 이동 시간은 다음과 같다.
총 이동 시간이 가장 긴 집 쌍을 찾아라.

위 그림은 인 경우이다. 번호가 있는 노드는 집, 채워진 노드는 교차로이며, 여러 도로가 한 교차로에서 만날 수 있다. 여기서 이다. , 이면 번 집에서 번 집까지 달리는 데 초가 걸리며, 이것이 이 동네에서 시간상 가장 긴 코스이다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 세 정수 (, 집의 수), (, 미터를 이동하는 데 걸리는 초), (, 교차로 하나를 지나는 데 걸리는 초)가 적힌 한 줄로 시작한다. 이어지는 개의 줄에는 각각 개의 정수가 행 우선(row-major) 순서로 주어지며, 번째 줄의 번째 값은 집 와 집 사이의 거리 이다 (일 때 ).
모든 에 대해 이고 일 때 임이 보장된다. 또한 이 행렬은 어떤 올바른 트리의 경로 길이에 대응한다. 즉 어떤 집도 내부 노드와 겹치지 않고, 모든 내부 노드의 차수는 이상이며, 모든 간선의 길이는 양수이다. 입력의 끝은 정수 하나만 있는 줄로 표시되며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 가능한 가장 긴 총 이동 시간을 한 줄에 출력한다.