Спектр#6622

Спектр

1 секунда
64 мегабайти
Дуже складна

Swamp County Consulting нещодавно отримала контракт від загадкового урядового агентства на створення бази даних для розслідування зв'язків між тим, що вони називають "цілями". Ваша команда була залучена як субпідрядник для реалізації системи, яка зберігає інформацію про цілі та обробляє команди, наведені нижче.

Ціль представлена рядком до друкованих символів без вбудованих пробілів. Зв'язок - це двостороннє відношення між двома цілями. Кількість переходів між даною ціллю (названою "ціль1") та іншими цілями визначається за такими правилами:

  1. Цілі, безпосередньо пов'язані з ціллю1, знаходяться на відстані переходів.

  2. Цілі, безпосередньо пов'язані з цілями на відстані переходів, і які ще не враховані як цілі на відстані переходів або як оригінальна ціль, є цілями на відстані переходу.

  3. Аналогічно, цілі, безпосередньо пов'язані з цілями на відстані переходів, і які ще не враховані в цілях на відстані переходів, є цілями на відстані n+1 переходів.

Не буде більше ніж цілей і не більше ніж зв'язків.

Команди

Система бази даних має лише три команди: add, associated, і connections. Цілі та зв'язки ніколи не видаляються, оскільки Агентство ніколи не забуває і не робить помилок. Команди починаються з першого стовпця рядка. Команди та їх параметри розділяються пробілами. Жоден вхідний рядок не перевищуватиме стовпців. На вихідному рядку не повинно бути початкових або кінцевих пробілів.

add приймає один або два параметри:

add target1 //один параметр

Функція: Додає ціль до бази даних без зв'язків.

Примітка: Якщо ціль вже є в базі даних, нічого не робити (це не помилка)

add target1 target2 //два параметри

Функція: Створює двосторонній зв'язок між цілями.

connections target1

Функція: Повертає кількість переходів до прямих та непрямих зв'язків від цілі.

associated target1 target2

Функція: Повертає інформацію про існування зв'язку між двома цілями

Вхідні дані

Щоб дозволити кілька тестових випадків у вхідному файлі, ми додаємо команду "reset", яка не є командою бази даних і з'являється між командами бази даних для різних випадків у вхідному файлі. Обов'язково скидайте всі ваші структури даних, коли читаєте цю команду. Обробляйте до кінця файлу; немає прапора кінця даних і немає команди "reset" в кінці файлу.

Вихідні дані

Починайте кожен випадок з рядка, що складається з "Case", одного пробілу, номера випадку та двокрапки. Закінчуйте кожен випадок рядком з десяти мінусів.

Приклади

Приклад 1

Loading
Loading