각 질의 (S, E)마다 두 사람이 도시를 바꿔 도착할 때까지 걸리는 통화 비용 C[a]*C[b]의 최댓값을 최소화하는 값을 구한다.
어려움8그래프최단 경로그리디아직 제출이 없습니다시간 제한2초메모리 제한256 MB석환나라에는 조승현이라는 이름을 가진 사람이 두 명 있다. 헷갈리니 한 명은 조승현13, 다른 한 명은 조승현16이라고 부르자. 둘은 서로의 존재를 모르고 지내다가 얼마 전 뉴스를 보고 알게 되었다. 자기와 이름이 같은 사람이 있다는 사실이 신기했던 둘은 연락처를 알아내 서로 연락하는 사이가 되었다.
어느 날 둘은 상대방이 사는 도시가 궁금해졌다. 전화로 서로의 도시를 설명하다 지친 둘은 결국 상대방의 도시로 여행을 가기로 했다.
석환나라는 N개의 도시로 이루어져 있고, 도시에는 1번부터 N번까지 번호가 붙어 있다. 도시 사이에는 도로가 M개 있다. 도로 하나는 서로 다른 두 도시를 잇고 양방향으로 다닐 수 있다. 어느 도시에서 출발하든 도로를 적당히 거쳐 나머지 모든 도시에 도착할 수 있음이 보장된다.
지금 조승현13은 S번 도시에 있고 조승현16은 E번 도시에 산다. 둘은 상대방에게 자기 도시로 오는 길을 알려주려고 전화를 계속 연결한 채 다음과 같이 여행한다.
전화를 하려면 각자 가진 전화기가 일정 수준 이상의 무선 신호 출력을 낼 수 있어야 한다. 도시 i마다 무선 신호가 잘 퍼지는 정도를 나타내는 양의 정수 Ci가 있고, 도시 a와 도시 b 사이에서 통화하려면 전화기가 Ca×Cb 이상의 출력을 낼 수 있어야 한다. 이상한 일이지만 두 사람이 같은 도시 안에 있어도 이 규칙은 그대로 적용된다.
두 조승현은 여행을 시작하기 전에 똑같은 전화기를 하나씩 사서 여행이 끝날 때까지 그 전화기만 쓴다. 전화기 가격은 전화기가 낼 수 있는 출력에 비례하므로, 어떻게 여행하느냐에 따라 필요한 전화기 가격이 달라진다. S와 E가 주어질 때, 여행을 무사히 마치는 데 필요한 전화기 출력의 최솟값을 구해 두 조승현을 만족시켜 주자.
입력은 테스트 케이스 하나로 이루어진다.
첫째 줄에 도시의 수 N(2≤N≤500)과 도로의 수 M(1≤M≤3000)이 주어진다.
둘째 줄에 정수 N개가 주어진다. i번째 정수는 i번 도시의 무선 신호 상수 Ci(1≤Ci≤40000)다.
이후 M개 줄에 정수 두 개 a, b(1≤a,b≤N, a=b)가 공백으로 구분되어 주어진다. 도시 a와 도시 b를 잇는 도로가 있다는 뜻이다.
그다음 줄에 질문의 수 Q(1≤Q≤(2N))가 주어진다. 이후 Q개 줄에 정수 두 개 S, E(1≤S,E≤N, S=E)가 공백으로 구분되어 주어진다. 처음에 조승현13이 S번 도시에, 조승현16이 E번 도시에 있는 상황을 뜻한다.
Q개 줄에 걸쳐 각 질문의 답을 주어진 순서대로 출력한다. i번째 줄에는 i번째 질문에서 여행을 무사히 마치는 데 필요한 전화기 출력의 최솟값을 출력한다.