trang chủ / đề bài / findteam

Tìm đồng đội

Đề bài

Mô tả

Có 2n người, đánh số từ 1 đến 2n, cần ghép thành đúng n đội, mỗi đội gồm hai người. Với mỗi cặp người (i,j), ta biết sức mạnh aij của đội gồm hai người đó. Mọi giá trị sức mạnh đều đôi một khác nhau.

Mỗi người đều muốn có đội mạnh nhất có thể. Hai người A và B (đều chưa có đội) sẽ ghép thành một đội nếu, trong số những người còn chưa có đội, B là đồng đội tốt nhất của A và A cũng là đồng đội tốt nhất của B. Quá trình ghép đội tiếp diễn cho đến khi mọi người đều có đội.

Hãy xác định đồng đội của từng người.

Dữ liệu vào

Gồm 2n dòng:

  • Dòng đầu tiên chứa số nguyên n.
  • Dòng thứ i (2≤i≤2n) chứa i−1 số nguyên ai1,ai2,…,ai(i−1), trong đó aij là sức mạnh của đội gồm người i và người j.

Dữ liệu ra

In ra trên một dòng 2n số nguyên, số thứ i là chỉ số đồng đội của người thứ i.

Ràng buộc

  • 1≤n≤400
  • 1≤aij≤106, các giá trị aij đôi một khác nhau

Ví dụ

Input Output Giải thích
2
6
1 2
3 4 5
2 1 4 3 Đội mạnh nhất là (1,2) với sức mạnh 6, nên người 1 và 2 ghép đội trước. Hai người còn lại là 3 và 4 ghép với nhau.
3
487060
3831 161856
845957 794650 976977
83847 50566 691206 498447
698377 156232 59015 382455 626960
6 5 4 3 2 1 Lần lượt ghép (3,4) với sức mạnh 976977, rồi (1,6) với 698377, cuối cùng (2,5) với 50566.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0