정유 회사의 이익은 주유소를 어디에 세우느냐에 따라 크게 달라진다. 이 회사는 이익을 최대로 만들려고 네트워크 플래닝이라고 부르는 방법으로 새 주유소를 세울 도시를 고른다.
당신은 이 회사의 컨설턴트다. 회사는 도시의 수와 도시를 잇는 도로, 도시마다의 연료 수요량, 이미 주유소가 있는 도시 목록, 올해 새로 지어야 하는 주유소의 개수를 넘겨준다. 회사가 원하는 답은 어느 도시에 새 주유소를 지어야 공급량이 가장 커지는지다.
규칙은 다음과 같다.
첫 줄에 테스트 케이스의 수 T가 주어진다. (T≤10)
각 테스트 케이스의 첫 줄에는 도시의 수 N이 주어진다. (1≤N≤100000)
이어지는 N개의 줄에는 도시 i의 연료 수요량 Di가 리터 단위로 한 줄에 하나씩 주어진다. (0≤Di≤1000)
다음 줄에는 도로의 수 E가 주어진다.
이어지는 E개의 줄에는 서로 이웃한 두 도시의 번호 C1과 C2가 주어진다. 도로는 양방향이고 같은 도로가 두 번 주어지지 않는다. 즉 (C1,C2)가 주어졌다면 같은 테스트 케이스에 (C2,C1)은 없다. 도시 번호는 1번부터 N번까지다. 한 도시의 이웃이 최대 세 곳이므로 E≤⌊3N/2⌋이다.
다음 줄에는 주유소가 이미 있는 도시의 수 S가 주어진다. (0≤S<N)
이어지는 S개의 줄에는 주유소가 이미 있는 도시의 번호가 한 줄에 하나씩 주어진다.
마지막 줄에는 올해 새로 지어야 하는 주유소의 개수 M이 주어진다. (1≤M≤N−S) 정확히 M개를 지어야 한다.
테스트 케이스마다 두 줄을 출력한다.
첫 줄에는 기존 주유소와 새로 지은 주유소가 함께 공급하는 연료의 최대 총량을 정수로 출력한다. 이 총량은 항상 0.1리터의 배수이므로 소수 첫째 자리에서 반올림하고, 소수 부분이 정확히 0.5이면 올린다.
둘째 줄에는 새로 주유소를 지어야 하는 도시의 번호를 증가하는 순서로 공백 하나씩 두고 출력한다. 이미 주유소가 있는 도시는 이 목록에 넣지 않는다. 최대 총량을 만드는 방법이 여러 가지라면, 번호를 증가하는 순서로 나열했을 때 사전순으로 가장 앞서는 것을 출력한다.
첫 번째 예제에는 테스트 케이스가 두 개 들어 있다. 앞의 테스트 케이스에서는 도시 3에만 새 주유소를 지어야 총 공급량이 360리터로 가장 커진다.
뒤의 테스트 케이스에는 최적해가 두 개 있다. 도시 1, 2, 5에 짓는 것과 도시 1, 3, 5에 짓는 것의 공급량이 같으므로, 사전순으로 앞서는 1 2 5를 출력해야 한다. 이때 도시 1은 268.2리터, 도시 2는 182.6리터, 도시 5는 290리터를 공급하고, 이미 주유소가 있는 도시 4는 150리터를 공급한다. 합이 268.2 + 182.6 + 290 + 150 = 890.8이므로 반올림한 891을 출력한다.