Bạn gợi ý
Đề bài
Mô tả
Trong một mạng xã hội, quan hệ bạn bè được cho dưới dạng cặp tên người dùng — nghĩa là và là bạn của nhau (quan hệ đối xứng).
Một người dùng được gọi là bạn gợi ý cho người dùng nếu thỏa mãn các điều kiện sau:
- ;
- và không phải là bạn của nhau;
- Trong số tất cả những người dùng thỏa mãn hai điều kiện trên, có nhiều bạn chung với nhất.
Người dùng là bạn chung của và (với , ) nếu là bạn của và đồng thời cũng là bạn của .
Với mỗi người dùng trong mạng, hãy đếm số lượng bạn gợi ý của họ.
Dữ liệu vào
- Dòng đầu tiên chứa một số nguyên — số cặp bạn bè trong mạng.
- dòng tiếp theo, mỗi dòng chứa hai tên cách nhau bởi dấu cách: và (). Tên người dùng là chuỗi khác rỗng, gồm tối đa ký tự chữ cái La-tinh in hoa hoặc in thường.
Mỗi cặp bạn bè xuất hiện đúng một lần trong dữ liệu vào (sẽ không có đồng thời cả và ). Các tên người dùng phân biệt là khác nhau. Mỗi người dùng có ít nhất một người bạn, do đó mỗi tên xuất hiện ít nhất một lần trong dữ liệu vào.
Dữ liệu ra
- Dòng đầu tiên in ra số người dùng trong mạng.
- dòng tiếp theo, mỗi dòng in tên một người dùng và số lượng bạn gợi ý của họ, cách nhau bởi dấu cách.
Có thể in các người dùng theo thứ tự bất kỳ.
Ràng buộc
- .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 Mike Gerald Kate Mike Kate Tank Gerald Tank Gerald David |
5 Mike 1 Gerald 1 Kate 1 Tank 1 David 2 |
Xét người dùng David. David chỉ có một người bạn là Gerald. Mike và Tank đều có 1 bạn chung (Gerald) với David, còn Kate không có bạn chung nào với David. Số bạn chung lớn nhất là , đạt bởi hai người (Mike và Tank), nên David có bạn gợi ý. |
| 4 valera vanya valera edik pasha valera igor valera |
5 valera 0 vanya 3 edik 3 pasha 3 igor 3 |
valera là bạn của tất cả người còn lại nên không có ai thỏa điều kiện , kết quả là . Với mỗi người còn lại (chẳng hạn vanya), người không phải bạn (edik, pasha, igor) đều có bạn chung (valera) với vanya — đây là số bạn chung lớn nhất, nên có bạn gợi ý. |
Bình luận