Thư tín tập đoàn
Đề bài
Mô tả
Cấu trúc của một tập đoàn có dạng cây phân cấp. Mỗi nhân viên có một tên (chuỗi chữ in hoa) và có thể có một số nhân viên cấp dưới. Toàn bộ cấu trúc được mô tả bằng một xâu theo văn phạm đệ quy sau:
- nhânviên ::= tên. | tên:nhânviên1,nhânviên2,...,nhânviênk.
- tên ::= tên của một nhân viên
Nghĩa là, phần mô tả của mỗi nhân viên gồm: tên của nhân viên đó, một dấu hai chấm (:), phần mô tả của tất cả các cấp dưới trực tiếp ngăn cách nhau bởi dấu phẩy (,), và cuối cùng là một dấu chấm (.). Nếu một nhân viên không có cấp dưới thì không có dấu hai chấm trong phần mô tả của nhân viên đó.
Ví dụ, xâu MIKE:MAX.,ARTEM:MIKE..,DMITRY:DMITRY.,DMITRY... mô tả một tập đoàn mà giám đốc MIKE có ba cấp dưới trực tiếp là MAX, ARTEM và DMITRY. ARTEM có một cấp dưới cũng tên là MIKE, và hai cấp dưới của DMITRY đều tên là DMITRY.
Trong tập đoàn này, một nhân viên chỉ có thể trao đổi thư với các cấp dưới của mình (không nhất thiết là cấp dưới trực tiếp, mà là mọi nhân viên nằm trong nhánh cây con của người đó). Gọi một tình huống khó xử là tình huống một người tên gửi thư cho một người khác cũng tên . Trong ví dụ trên có ba cặp như vậy: một cặp liên quan đến MIKE, và hai cặp liên quan đến DMITRY (mỗi cặp ứng với một cấp dưới của ông ta).
Nói cách khác, cần đếm số cặp (tổ tiên, hậu duệ) trong cây mà hai người trùng tên nhau.
Dữ liệu vào
Một dòng duy nhất chứa xâu mô tả cấu trúc tập đoàn, có độ dài từ đến ký tự. Dữ liệu vào được bảo đảm là hợp lệ. Mỗi tên là một chuỗi gồm các chữ cái Latin in hoa, độ dài từ đến ký tự.
Dữ liệu ra
In ra một số nguyên — số lượng tình huống khó xử trong tập đoàn.
Ràng buộc
- Độ dài xâu mô tả: từ đến ký tự.
- Mỗi tên gồm đến chữ cái in hoa.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| MIKE:MAX.,ARTEM:MIKE..,DMITRY:DMITRY.,DMITRY... | 3 | Một cặp MIKE (ARTEM có cấp dưới MIKE nằm trong nhánh của giám đốc MIKE) và hai cặp DMITRY (DMITRY có hai cấp dưới cùng tên). |
| A:A.. | 1 | A có một cấp dưới cũng tên A. |
| A:C:C:C:C..... | 6 | Một chuỗi lồng nhau A → C → C → C → C. Bốn người tên C tạo cặp tổ tiên–hậu duệ trùng tên. |
Bình luận