Kiểm định mã (Contest Practice VNOI 2021 Round 3)

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Prolog, Pypy, Pypy 3, Ruby, Rust, Scala, Swift
Điểm: 2300 Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho \(S\) là một tập các từ (word). Từ tập \(S\), ta có thể tạo ra các chuỗi (string) bằng cách viết liền các từ của \(S\) (mỗi từ có thể sử dụng nhiều lần). Giả sử \(A\) là một chuỗi tạo ra bằng cách trên:

\(A = x_{1} x_{2} \ldots x_{k}\) với \(x_{i} \in S, \forall i \in \{1, 2, \ldots, k\}\)

Khi đó \(X = x_{1}, x_{2}, \ldots, x_{k}\) được gọi là một dẫn xuất của chuỗi \(A\). Rõ ràng là một chuỗi có thể có nhiều dẫn xuất, ví dụ:

\(S = \{ab, ba, a\}, A = aba = ab + a = a + ba\)

Tập \(S\) được gọi là một bộ mã nếu không tồn tại chuỗi nào có nhiều hơn một dẫn xuất. Khi đó, mọi dãy các số tự nhiên nhỏ hơn |S| đều có thể mã hóa thành một chuỗi mà chỉ có một cách giải mã. Bài toán kiểm định mã là kiểm tra xem \(S\) có phải là một bộ mã hay không.
Yêu cầu: Kiểm tra xem \(S\) có phải là một bộ mã hay không. Trong trường hợp \(S\) không phải
là một bộ mã, hãy tìm chuỗi ngắn nhất có nhiều hơn một dẫn xuất.

Input

  • Dòng đầu tiên chứa \(n\) là lực lượng tập \(S\).
  • \(n\) dòng tiếp theo, mỗi dòng chứa một từ của \(S\). Các từ chỉ chứa các chữ cái latin thường. Tổng độ dài các từ không quá \(2000\) và không có hai từ nào giống nhau.

Output

  • Nếu \(S\) là một bộ mã, in ra \(-1\).
  • Ngược lại, in ra chuỗi ngắn nhất có nhiều hơn một dẫn xuất. Trong trường hợp có nhiều chuỗi ngắn nhất, in ra chuỗi có thứ tự từ điển nhỏ nhất.

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): Các từ chỉ gồm các ký tự a, b, c và có không quá \(10\) từ trong tập \(S\); kết quả hoặc là \(−1\) hoặc là một chuỗi có độ dài không quá \(10\).
  • Subtask \(2\) (\(30\%\) số điểm): tổng độ dài các từ không quá \(500\); kết quả hoặc là \(−1\) hoặc là một chuỗi có độ dài không quá \(500\).
  • Subtask \(3\) (\(40\%\) số điểm): không có ràng buộc gì thêm.

Example

Test 1

Input
3
ab
ba
a
Output
aba

Test 2

Input
2
a
b
Output
-1

Bình luận (3)

Mới nhất
Tải bình luận...