#1577. GROUP - Chia nhóm

Bộ nhớ: 256 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

Thành phố ABC có n người dân sinh sống. Người thứ i có tên là s_i . Hai người được gọi là có liên quan tới nhau nếu như trong tên của họ có k chữ cái ở đầu giống hệt nhau hoặc k chữ cái ở cuối giống hệt nhau.

Yêu cầu: Tìm cách chia n người vào ít nhóm nhất sao cho mọi người cùng trong một nhóm bất kỳ đều có liên quan với nhau. (nhóm có thể gồm 1 người).

Dữ liệu:

  • Dòng đầu tiên chứa hai số nguyên dương n k\ (n ≤ 5000) ;
  • Dòng thứ i trong n dòng sau chứa một xâu s_i không quá 1000 ký tự gồm các chữ cái in hoa là tên của người thứ i trong thành phố. Dữ liệu đảm bảo tất cả các tên đều có độ dài ≥k .

Kết quả:

  • Dòng đầu tiên chứa số nguyên p là số nhóm ít nhất có thể chia;
  • Dòng thứ i trong p dòng sau chứa số nguyên q_i là số người trong nhóm i và sau đó là q_i số nguyên xác định chỉ số những người thuộc nhóm này.

Ví dụ:

Dữ liệu:

6 1
HONGSON
HUYNHDUC
SANG
TRONG
HUNG
DUNG

Kết quả:

2
2 1 2
4 3 4 5 6

Ràng buộc:

  • 30\% số test có n≤20 .