[PreVOI 23 - Ninh Bình] Bài 3: Police

Xem dạng PDF

Gửi bài giải

Điểm: 150,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, PyPy, Python, Scratch

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Thành phố H được biết đến với cái tên “thiên đường tội phạm” có ~n~ (~n \le 2 \times 10^5~) giao lộ được nối với nhau bằng ~m~ (~m \le 2 \times 10^5~) con đường, đảm bảo tồn tại ít nhất một tuyến đường đi giữa 2 giao lộ bất kì.

Vào mỗi ngày trong ~q~ (~q \le 2 \times 10^5~) ngày liên tiếp, cục cảnh sát nhận được một tin báo rằng sẽ có một nhóm tội phạm di chuyển từ ~u~ tới ~v~. Để ngăn chặn nhóm tội phạm, cục cảnh sát có thể điều động duy nhất 1 nhóm cảnh sát canh giữ tại ~w~ (khác ~u~ và ~v~) với chi phí là ~a[w]~ sao cho mọi đường đi của tội phạm đi ~u~ tới ~v~ đều phải đi qua ~w~.

Yêu cầu: Hãy tìm chi phí nhỏ nhất để ngăn chặn nhóm tội phạm.

Input

  • Dòng đầu ghi 2 số ~n, m~ là số giao lộ và số con đường trong thành phố (~n, m \le 2 \times 10^5~).
  • Dòng thứ hai ghi ~n~ số ~a[1], a[2], \dots, a[n]~ là chi phí để điều động cảnh sát tới từng giao lộ (~a[i] \le 10^9~).
  • Sau đó là ~m~ dòng, mỗi dòng ghi 2 số ~a, b~, thể hiện có 1 con đường nối 2 giao lộ ~a~ và ~b~.
  • Dòng tiếp theo ghi số ngày ~q~ có tin báo tội phạm (~q \le 2 \times 10^5~).
  • Dòng thứ ~i~ trong ~q~ dòng sau ghi 2 số ~u, v~ (~1 \le u, v \le n~) thể hiện 1 nhóm tội phạm di chuyển từ ~u~ tới ~v~ trong ngày thứ ~i~.

Output

  • In ra ~q~ dòng, dòng thứ ~i~ là chi phí nhỏ nhất để ngăn chặn nhóm tội phạm ở ngày thứ ~i~, hoặc -1 nếu không thể ngăn chặn.

Sample Input 1

5 5
4 1 10 7 5
1 2
2 3
3 5
4 3
5 2
5
1 4
3 4
1 3
3 3
5 4

Sample Output 1

1
-1
1
-1
10

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.