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

Nhãn nhỏ nhất

Đề bài

Mô tả

Cho một đồ thị có hướng không chu trình (DAG) gồm n đỉnh và m cạnh. Đồ thị không có khuyên và không có hai cạnh trùng nhau giữa cùng một cặp đỉnh. Đồ thị có thể không liên thông.

Bạn cần gán cho mỗi đỉnh một nhãn sao cho:

  • Dãy nhãn là một hoán vị của 1,2,,n (mỗi số nguyên từ 1 đến n xuất hiện đúng một lần).
  • Nếu có cạnh đi từ đỉnh v tới đỉnh u thì nhãn của v phải nhỏ hơn nhãn của u.
  • Trong tất cả các cách gán thoả mãn hai điều kiện trên, dãy nhãn (xét theo thứ tự đỉnh 1,2,,n) phải nhỏ nhất theo thứ tự từ điển.

Hãy tìm dãy nhãn thoả mãn tất cả các điều kiện.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên vu mô tả một cạnh có hướng từ v tới u.

Dữ liệu ra

In ra n số: nhãn của đỉnh 1, đỉnh 2, ..., đỉnh n, cách nhau bởi dấu cách.

Ràng buộc

  • 2n105
  • 1m105
  • 1v,un, vu
  • Đồ thị đã cho luôn là đồ thị có hướng không chu trình.

Ví dụ

Input Output Giải thích
3 3
1 2
1 3
3 2
1 3 2 Các ràng buộc: nhãn(1) < nhãn(2), nhãn(1) < nhãn(3), nhãn(3) < nhãn(2). Cách gán 1 3 2 thoả mãn và nhỏ nhất theo thứ tự từ điển.
4 5
3 1
4 1
2 3
3 4
2 4
4 1 2 3 Đỉnh 2 không có cạnh vào nên có thể nhận nhãn nhỏ. Thứ tự bắt buộc: 2341, cho dãy nhãn nhỏ nhất theo thứ tự từ điển là 4 1 2 3.
5 4
3 1
2 1
2 3
4 5
3 1 2 4 5 Hai thành phần rời nhau. Ràng buộc 23145 dẫn tới dãy nhãn 3 1 2 4 5.

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