Xếp chỗ giáo sư

Đề bài

Mô tả

n giáo sư, được đánh số từ 1 đến n theo thâm niên: giáo sư 1 thâm niên cao nhất, giáo sư n thâm niên thấp nhất (mọi thâm niên đôi một khác nhau).

Hội trường có n ghế, mỗi ghế cho một giáo sư. Có m cặp ghế ràng buộc thứ tự: với mỗi cặp (ai,bi), giáo sư ngồi ghế ai phải thâm niên hơn giáo sư ngồi ghế bi (tức số hiệu của người ngồi ghế ai nhỏ hơn số hiệu của người ngồi ghế bi).

Một cách xếp là dãy n số nguyên, trong đó số thứ i là số hiệu (thâm niên) của giáo sư ngồi ở ghế thứ i.

Truyền thống quy định: năm 2001 dùng cách xếp nhỏ nhất theo thứ tự từ điển trong số các cách xếp hợp lệ (thỏa mọi ràng buộc). Mỗi năm kế tiếp dùng cách xếp hợp lệ kế tiếp theo thứ tự từ điển.

Cho n, năm ym cặp ràng buộc, hãy in ra cách xếp được dùng vào năm y.

Nếu đến năm đó số cách xếp hợp lệ đã cạn kiệt, hoặc các ràng buộc mâu thuẫn (không có cách xếp hợp lệ nào), hãy in ra dòng chữ The times have changed (không có dấu nháy).

So sánh thứ tự từ điển giữa hai cách xếp thực hiện theo toán tử < thông thường: cách xếp u nhỏ hơn v nếu tồn tại i sao cho ui<viuj=vj với mọi j<i.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, y, m.
  • m dòng tiếp theo, mỗi dòng chứa một cặp số nguyên ai bi, nghĩa là người ngồi ghế ai thâm niên hơn người ngồi ghế bi. Một cặp có thể xuất hiện nhiều lần.

Dữ liệu ra

In ra thứ tự các giáo sư ngồi vào các ghế cho năm được yêu cầu, hoặc dòng chữ The times have changed nếu không tồn tại.

Ràng buộc

  • 1n16
  • 2001y1018
  • 0m100
  • 1ai,bin, aibi

Ví dụ

Input Output Giải thích
3 2001 2
1 2
2 3
1 2 3 Ràng buộc buộc thâm niên tại ghế 1< ghế 2< ghế 3, nên chỉ có duy nhất cách xếp 1 2 3. Năm 2001 dùng cách xếp từ điển nhỏ nhất.
7 2020 6
1 2
1 3
2 4
2 5
3 6
3 7
1 2 3 7 4 6 5 Năm 2020 là cách xếp hợp lệ thứ 20202001+1=20 theo thứ tự từ điển.
3 2001 3
1 2
2 3
3 1
The times have changed Các ràng buộc tạo thành chu trình (ghế 1< ghế 2< ghế 3< ghế 1) nên không có cách xếp hợp lệ nào.

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