Trao đổi sách
Nộp bài giải
Điểm:
2,00 (OI)
Giới hạn thời gian:
1.0s
Python 3
5.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
C++, Go, Java, Kotlin, Pascal, Python, Scratch
Có học sinh, ban đầu mỗi học sinh giữ một cuốn sách khác nhau. Vào cuối mỗi ngày, học sinh thứ đưa cuốn sách mình đang giữ cho học sinh (nếu thì cuốn sách ở lại với chính học sinh ). Dãy là một hoán vị của và không thay đổi qua các ngày.
Với mỗi học sinh , hãy xác định số ngày ít nhất để cuốn sách ban đầu của học sinh quay trở lại với chính học sinh đó.
Bạn cần trả lời truy vấn độc lập.
Dữ liệu vào
- Dòng đầu chứa một số nguyên — số truy vấn.
- Mỗi truy vấn gồm hai dòng:
- Dòng đầu chứa số nguyên — số học sinh.
- Dòng thứ hai chứa số nguyên tạo thành một hoán vị của .
Dữ liệu ra
Với mỗi truy vấn, in ra số nguyên trên một dòng, trong đó là số ngày ít nhất để cuốn sách của học sinh thứ quay trở lại với học sinh đó.
Ràng buộc
- , các đôi một phân biệt.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 5 1 2 3 4 5 3 2 3 1 |
1 1 1 1 1 3 3 3 |
Truy vấn 1: là hoán vị đồng nhất, mỗi cuốn sách quay lại sau đúng ngày. Truy vấn 2: , ba học sinh tạo thành một vòng độ dài . |
| 2 4 3 4 1 2 5 5 1 2 4 3 |
2 2 2 2 4 4 4 1 4 |
Ở truy vấn 1, cặp và tạo hai vòng độ dài . Ở truy vấn 2, các học sinh tạo vòng độ dài , còn học sinh là điểm bất động (vòng độ dài ). |
Bình luận