#60. Chia nhóm tham quan (Mã bài: PARK)

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

N bạn, bạn thứ i thích địa điểm A[i] . Có M yêu cầu, yêu cầu thứ i là hai bạn U[i] , V[i] muốn đi cùng nhau. Chia các bạn thành nhóm sao cho tất cả yêu cầu được đảm bảo và số bạn được đi đúng địa điểm yêu thích là nhiều nhất. Duy có thể bỏ duy nhất một yêu cầu. Với mỗi yêu cầu bị bỏ, tính số bạn được đi đúng địa điểm yêu thích nhiều nhất.

Dữ liệu:

  • Dòng đầu chưa hai số nguyên N,M (1 \le N,M \le 10^5) .
  • Dòng thứ hai chứa N số nguyên A[1],A[2],...,A[N] (1 \le A[i] \le 10^5) .
  • M dòng cuối, mỗi dòng hai số nguyên U[i],V[i] (1 \le U[i],V[i] \le N) .

Kết quả: Ghi ra M số nguyên C[1],C[2],...,C[M] , với C[i] là số bạn được đi đúng địa điểm yêu thích nếu bỏ yêu cầu thứ i .

Ví dụ:

Dữ liệu:

7 5
1 2 1 2 1 2 1
1 2
1 3
2 4
5 6
5 7

Kết quả:

6 5 5 5 4

Giới hạn:

  • Subtask 1: N \le 10, A[i] \le 3 (10%).
  • Subtask 2: Mỗi bạn xuất hiện trong không quá 2 yêu cầu (20%).
  • Subtask 3: N,M \le 5000 (20%).
  • Subtask 4: A[i] \le 100 (20%).
  • Subtask 5: Không ràng buộc thêm (30%).