trang chủ / bài tập / bookexch

Trao đổi sách

Đề bài

Mô tả

n 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ứ i đưa cuốn sách mình đang giữ cho học sinh pi (nếu pi=i thì cuốn sách ở lại với chính học sinh i). Dãy p1,p2,,pn là một hoán vị của 1,2,,n và không thay đổi qua các ngày.

Với mỗi học sinh i, hãy xác định số ngày ít nhất để cuốn sách ban đầu của học sinh i quay trở lại với chính học sinh đó.

Bạn cần trả lời q truy vấn độc lập.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên q — số truy vấn.
  • Mỗi truy vấn gồm hai dòng:
    • Dòng đầu chứa số nguyên n — số học sinh.
    • Dòng thứ hai chứa n số nguyên p1,p2,,pn tạo thành một hoán vị của 1,2,,n.

Dữ liệu ra

Với mỗi truy vấn, in ra n số nguyên a1,a2,,an trên một dòng, trong đó ai là số ngày ít nhất để cuốn sách của học sinh thứ i quay trở lại với học sinh đó.

Ràng buộc

  • 1q200
  • 1n200
  • 1pin, các pi đô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: p là hoán vị đồng nhất, mỗi cuốn sách quay lại sau đúng 1 ngày. Truy vấn 2: 1231, ba học sinh tạo thành một vòng độ dài 3.
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 (1,3)(2,4) tạo hai vòng độ dài 2. Ở truy vấn 2, các học sinh 1,5,3,2 tạo vòng độ dài 4, còn học sinh 4 là điểm bất động (vòng độ dài 1).

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0