아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

ICPC 왕국 도로 복구

시간 제한2초메모리 제한1024 MB

요약
사이클이 없고 서로 다른 작업자가 하나씩 맡을 수 있도록 도로 k개를 고를 때, floor(sqrt(a_u + a_v)) 합의 최댓값을 k마다 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 최단 경로, 유니온 파인드, 그리디
정답자
아직 제출이 없습니다

문제

ICPC 왕국에는 1번부터 nn번까지 번호가 붙은 nn개의 도시가 있고, 이 도시들을 잇는 1번부터 mm번까지 번호가 붙은 mm개의 도로가 있다. 각 도로는 두 도시를 잇고, 사람들은 도로를 양방향으로 오갈 수 있다. 도시 ii에는 aia_i명의 주민이 살고 있다. 도로 jj는 도시 uju_j와 도시 vjv_j를 잇는다. 도로 jj의 경제적 이익은 ⌊auj+avj⌋\left\lfloor \sqrt{a_{u_j} + a_{v_j}} \right\rfloor이다.

어느 날 적이 왕국을 침입해 모든 도로를 파괴했다. 다행히 ICPC 군대가 적을 물리치고 침입을 막아냈다. 전쟁 복구를 위해 ICPC의 왕은 ww명의 작업자를 고용해 도로를 수리하게 했다. 각 작업자는 최대 한 개의 도로만 수리할 수 있다. ii번째 작업자는 b1,b2,…,bxib_1, b_2, \dots, b_{x_i} 번 도로 중 한 개만 수리할 수 있다.

왕은 수리 계획에 쓸모없는 도로가 포함되는 것을 원하지 않는다. 두 도시 pp와 qq 사이에 단순 경로가 둘 이상 있는 쌍이 존재하면, 그 계획에는 쓸모없는 도로가 포함된 것이다. 단순 경로는 서로 다른 도로의 열 c1,c2,…,czc_1, c_2, \dots, c_z이며, 이 경로를 따라 이동하면 정확히 z+1z + 1개의 서로 다른 도시를 방문한다.

왕은 쓸모없는 도로 없이 정확히 kk개의 도로를 수리했을 때의 최대 경제적 이익을 계산해 달라고 요청한다. kk는 1부터 n−1n - 1까지 각각에 대해 계산해야 한다.

입력

첫째 줄에 공백으로 구분된 nn과 mm이 주어진다. nn은 도시의 수, mm은 도로의 수이다. 둘째 줄에는 도시 1,2,…,n1, 2, \dots, n의 주민 수 a1,a2,…,ana_1, a_2, \dots, a_n이 주어진다. 이어지는 mm개의 줄에는 각각 uju_j와 vjv_j가 주어지며, 도로 jj가 도시 uju_j와 vjv_j를 잇는다. 다음 줄에는 작업자의 수 ww가 주어진다. 이어지는 ww개의 줄은 작업자가 수리할 수 있는 도로를 나타낸다. (3+i)(3 + i)번째 줄의 첫 수 xix_i는 ii번째 작업자가 수리할 수 있는 도로의 개수이고, 그 뒤에 서로 다른 정수 b1,b2,…,bxib_1, b_2, \dots, b_{x_i}가 이어진다. ii번째 작업자는 이 도로들 중 한 개만 수리할 수 있다.

출력

n−1n - 1개의 수를 출력한다. ii번째 수는 쓸모없는 도로 없이 정확히 ii개의 도로를 수리했을 때의 최대 경제적 이익이다. 그런 계획이 없으면 -1을 출력한다.

제한

  • 1≤n≤1001 \le n \le 100
  • 0≤m≤1000 \le m \le 100
  • 1≤ai≤1091 \le a_i \le 10^9
  • 1≤ui,vi≤n1 \le u_i, v_i \le n
  • ui≠viu_i \ne v_i
  • 0≤w≤1000 \le w \le 100

예제1

  1. 예제 1

    입력
    5 4
    1 2 2 1 4
    1 2
    2 3
    3 1
    4 1
    3
    2 2 4
    3 1 2 3
    2 1 3
    
    예상 출력
    2 3 4 -1