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

Ghép đôi công chúa

Đề bài

Mô tả

Một vị vua có n công chúa, đánh số từ 1 đến n. Xung quanh vương quốc có đúng n vương quốc láng giềng, cũng đánh số từ 1 đến n, mỗi vương quốc có một hoàng tử. Công chúa thứ i đưa ra một danh sách các vương quốc mà cô ấy chấp nhận kết hôn với hoàng tử của vương quốc đó.

Nhà vua ghép đôi một cách tham lam, xét lần lượt các công chúa theo thứ tự từ 1 đến n:

  • Với công chúa thứ i, nhà vua chọn vương quốc có chỉ số nhỏ nhất trong danh sách của cô ấy mà hoàng tử chưa bị ghép đôi, rồi gả công chúa i cho hoàng tử đó.
  • Nếu mọi hoàng tử trong danh sách của công chúa i đều đã bị ghép đôi (hoặc danh sách rỗng), công chúa i không kết hôn và nhà vua chuyển sang công chúa tiếp theo.

Trước khi bắt đầu quá trình ghép đôi, nhà vua có thời gian thuyết phục đúng một công chúa bổ sung đúng một vương quốc vào danh sách của cô ấy. Vương quốc được thêm phải chưa có sẵn trong danh sách của công chúa đó. Sau khi thêm, quá trình ghép đôi tham lam ở trên được chạy lại từ đầu.

Hãy xác định xem có cách thêm nào làm tăng tổng số cặp kết hôn hay không. Nếu có, in ra một cách bất kỳ; nếu không, thông báo rằng kết quả đã tối ưu.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa số nguyên n là số công chúa và cũng là số vương quốc.
    • n dòng tiếp theo mô tả danh sách của từng công chúa. Dòng thứ i bắt đầu bằng số nguyên k là độ dài danh sách, tiếp theo là k số nguyên phân biệt g1,g2,,gk theo thứ tự tăng dần, là các chỉ số vương quốc trong danh sách của công chúa i.

Dữ liệu ra

Với mỗi bộ dữ liệu:

  • Nếu có thể tăng số cặp kết hôn, in ra dòng chứa từ IMPROVE, sau đó một dòng chứa hai số nguyên là chỉ số công chúa và chỉ số vương quốc cần thêm vào danh sách của cô ấy. Nếu có nhiều cách, in ra một cách bất kỳ.
  • Ngược lại, in ra một dòng duy nhất chứa từ OPTIMAL.

Ràng buộc

  • 1t105
  • 1n105
  • 0kn1g1<g2<<gkn
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 105
  • Tổng độ dài các danh sách trên tất cả các bộ dữ liệu không vượt quá 105

Ví dụ

Input Output Giải thích
2
4
2 2 3
2 1 2
2 3 4
1 3
2
0
0
IMPROVE
4 4
IMPROVE
1 1
Bộ 1: công chúa 1 lấy hoàng tử 2, công chúa 2 lấy hoàng tử 1, công chúa 3 lấy hoàng tử 3, công chúa 4 không lấy được ai vì hoàng tử 3 đã bị ghép. Thêm vương quốc 4 vào danh sách của công chúa 4 thì cô ấy lấy được hoàng tử 4, số cặp tăng từ 3 lên 4. Bộ 2: cả hai danh sách đều rỗng nên không ai kết hôn, thêm bất kỳ mục nào cũng tạo ra một cặp.
3
3
3 1 2 3
3 1 2 3
3 1 2 3
1
1 1
4
1 1
1 2
1 3
1 4
OPTIMAL
OPTIMAL
OPTIMAL
Trong cả ba bộ, mọi công chúa đều đã kết hôn nên không thể tăng thêm được nữa.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0