Hướng dẫn cho VTS
Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Authors:
Ta đưa bài này về đồ thị như sau : Coi mỗi xâu kí tự \(S\) như một cạnh nối từ kí tự đầu tới kí tự cuối của \(S\).
Như vậy, việc nối các xâu thành một vòng tròn như trong đề mô tả, thực chất là từ một kí tự (một số), đi qua các cạnh phân biệt, và quay trở về chính nó.
Đường đi như vậy gọi là chu trình Euler. Từ khóa tìm kiếm là Eulerian Cycle, bạn có thể tìm đọc sâu hơn.
Quay trở lại bài toán này, do \(m < 20\), \(n \leq 10\) (chỉ có 10 chữ số), nên bạn hoàn toàn có thể duyệt qua tất cả tập cạnh (có \(2^m\) tập như thế), rồi kiểm tra tập cạnh này có tạo thành chu trình Euler hay không?
Điều kiện cần và đủ để một đồ thị vô hướng có chu trình Euler là :
- Mọi đỉnh có bậc chẵn
- Các cạnh liên thông với nhau. (Nói cách khác, tất cả những đỉnh có cạnh nối tới (có bậc \(d>0\)) đều phải thuộc vào cùng 1 TPLT.
Bình luận