Tại một buổi tiệc kết bạn, có \(N\) người tham gia. Mỗi người đều bí mật gửi một tờ giấy ghi tên người mà mình có cảm tình và muốn được làm quen. Nếu một người không có ai đặc biệt trong lòng, họ sẽ ghi tên chính mình.
Mỗi người tham gia cũng cam kết rằng nếu được ghép đôi với bất kỳ ai (không cần đúng người mình thích), họ sẽ trả một khoản phí nhất định cho ban tổ chức để hỗ trợ kinh phí tổ chức các buổi tiệc tiếp theo.
Ban tổ chức sẽ thực hiện việc ghép cặp, mỗi cặp gồm hai người \((u, v)\) sao cho ít nhất một trong hai người có cảm tình với người kia, tức là \(a_u = v\) hoặc \(a_v = u\). Một người chỉ được tham gia vào nhiều nhất một cặp.
Hãy giúp ban tổ chức tìm cách ghép các cặp sao cho tổng số tiền thu được là lớn nhất có thể.
Input
Dòng đầu tiên chứa số nguyên dương \(N\) \((1 \le N \le 10^5)\) --- số người tham gia buổi tiệc.
Dòng thứ hai chứa \(N\) số nguyên \(a_1, a_2, \ldots, a_N\) \((1 \le a_i \le N)\) --- với \(a_i\) là người mà người thứ \(i\) có cảm tình. Nếu \(a_i = i\) thì người thứ \(i\) không có cảm tình với ai cả.
Dòng thứ ba chứa \(N\) số nguyên \(b_1, b_2, \ldots, b_N\) \((0 \le b_i \le 10^9)\) --- với \(b_i\) là số tiền người thứ \(i\) sẽ trả nếu được ghép vào một cặp bất kỳ.
Output
In ra một số nguyên duy nhất --- tổng số tiền lớn nhất mà ban tổ chức có thể nhận được nếu ghép các cặp theo đúng quy tắc.
Example
Test 1
Input
5
2 3 1 1 1
1 2 3 4 5
Output
11
Note
- **Subtask 1 (20 điểm): ** \(N \le 20\)
- **Subtask 2 (80 điểm): ** Không có ràng buộc thêm.
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.