В последнее время много пользователей начало вести интернет-дневники — блоги. Пользователи пишут дневники и изредка читают чужие. Пользователи эти отличаются от среднестатистических граждан, в частности тем, что обожают считать своих виртуальных друзей. Другом они называют любого, кто читает их писанину. Считается, что один пользователь читает блог другого, если он упомянул его в своем блоге.
Для каждого пользователя выведите список его друзей, людей, которые считают данного пользователя своим другом, и список взаимных друзей, то есть тех, кто является другом данного пользователя, и считает его своим другом.
Даны блоги всех этих пользователей. Требуется выдать для каждого пользователя указанные три списка. Пользователи помечают своих друзей тэгом <friend>. Тэгом называется строка, состоящая из строчных латинских букв, окруженных символами меньше (<) и больше (>). Закрывающимся тэгом называется строка, состоящая из строчных латинских букв, окруженных символами меньше и слэшем (</) в начале и больше (>) в конце.
Исходные данные
В первой строке указано число N (1 ≤ N ≤ 100) — количество блогов во входных данных. В первой строке каждого блога указано имя блоггера, создавшего этот дневник. Все имена авторов блога различны. Следующая строка начинается с тэга <blog>. Последняя строка блога заканчивается закрывающимся тэгом </blog>. В тексте блога нет других тэгов <blog>. Для каждого открывающегося и закрывающегося тэга в тексте присутствует соответствующий ему парный тэг. Символы больше, меньше и слэш появляются только в тэгах. Во входных данных встречаются только строчные и заглавные латинские буквы, цифры, символы больше, меньше, слэш, точка, запятая, символ подчеркивания. Имена друзей регистрочувствительны. Тэг нельзя разорвать переводом строки. Имя «друга» может состоять из строчных и заглавных латинских букв и символа подчеркивания. Имя «друга» не может быть пусто. Длина строки блога не превышает 255 символов. Блог содержит не более 1000 строк. Число людей, упоминаемых в блогах, не превышает 100.
Результат
Для каждого блоггера, блог которого присутствует во входных данных, вы должны вывести списки тех, чьи блоги он упомянул (друзья), тех, кто упомянул его в своем блоге (в друзьях), и тех, кто есть как в первом списке, так и во втором. Каждый список нужно приводить в отдельной строке, упорядоченный по алфавиту. Имена в списке разделяются запятой и пробелом. Перед списком «друзей» необходимо вывести строку «1: ». Перед списком «в друзьях» необходимо вывести строку «2: ». Перед списком «взаимных друзей» необходимо вывести строку «3: ». Перед этими тремя списками необходимо вывести имя блоггера, а перед ним — пустую строку (если это не первый блоггер). Блоггер не является своим другом, даже если упомянул себя в своем блоге.
Пример
исходные данные | результат |
---|
3
xoposhiy
<blog>
Tomorrow I found <friend>_denplusplus_</friend> to
be <b>smartest</b> blogger in the net.
Also I received interesting link from
<friend>strange_human</friend>
</blog>
_denplusplus_
<blog>
Some shit about my work.
</blog>
strange_human
<blog>
<friend>xoposhiy</friend>
<friend>_denplusplus_</friend>
</blog>
| xoposhiy
1: _denplusplus_, strange_human
2: strange_human
3: strange_human
_denplusplus_
1:
2: strange_human, xoposhiy
3:
strange_human
1: _denplusplus_, xoposhiy
2: xoposhiy
3: xoposhiy
|
Автор задачи: Ден Расковалов
Источник задачи: Чемпионат школьников. Март 2005