#777. Vòng tròn từ ngữ (WORDRINGS)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: Trình chấm ngoài
Đưa lên bởi: Trùm CUỐI

Đề bài

Chúng ta có n chuỗi ký tự, mỗi chuỗi bao gồm các chữ cái tiếng Anh in thường từ a đến z. Nếu hai ký tự cuối cùng của chuỗi A trùng khớp hoàn toàn với hai ký tự đầu tiên của chuỗi B , ta nói rằng A có thể nối với B (Lưu ý: A nối được với B không có nghĩa là B nối được với A ). Chúng ta muốn chọn ra một số chuỗi từ các chuỗi đã cho để nối chúng lại thành một vòng tròn (một chuỗi tự nối đầu đuôi với chính nó cũng được tính), và muốn độ dài trung bình của vòng tròn này là lớn nhất. Ví dụ:

ababc bckjaca caahoynaab

Chuỗi thứ nhất nối được với chuỗi thứ hai, chuỗi thứ hai nối được với chuỗi thứ ba, chuỗi thứ ba nối được với chuỗi thứ nhất. Theo thứ tự này, chúng tạo thành một vòng tròn có tổng độ dài là 5+7+10=22 (phần trùng lặp được tính hai lần), tổng cộng sử dụng 3 chuỗi, vậy độ dài trung bình là \frac{22}{3}\approx 7.33 .

Dữ liệu:

  • Bài này có nhiều bộ dữ liệu (multitest).
  • Dòng đầu tiên của mỗi bộ dữ liệu là một số nguyên n , biểu thị số lượng chuỗi.
  • Tiếp theo là n dòng, mỗi dòng chứa một chuỗi có độ dài nhỏ hơn hoặc bằng 1000 .
  • Dữ liệu kết thúc khi gặp số 0 .

Kết quả:

  • Nếu không tồn tại vòng tròn nào, xuất No solution, ngược lại xuất độ dài trung bình của vòng tròn dài nhất.
  • Đáp án được coi là đúng nếu sai lệch không quá 0.01 so với đáp án chuẩn.

Ví dụ:

Dữ liệu:

3
intercommunicational
alkylbenzenesulfonate
tetraiodophenolphthalein
0

Kết quả:

21.66

Giới hạn: 1\le n\le 10^5 .