Працьовитий студент
Біллі — старанний студент, який захоплюється комп'ютерами і прагне дізнатися про них якомога більше. Наразі він вивчає теорію графів і має написати програму, яка зможе побудувати граф, зображений на малюнку.
Вершини графа пронумеровані послідовно цілими числами від 0 до N-1 (N ≤ 10000). Існують два типи ребер: зворотні ребра, позначені літерою B на малюнку (наприклад, з вершини 4 у вершину 2, або з вершини 3 у вершину 1), і прямі ребра, позначені літерою F (наприклад, з 1 у 2 або з 0 у 3). Програма Біллі починає з графа, що містить вершини 0, 1, 2, 3. Далі вона повинна будувати граф згідно з послідовністю команд, що містяться у текстовому файлі. Кожна команда має формат:
index0 рядок_символів index1
де index0 і index1 — номери вершин, а рядок_символів — це послідовність дій, які виконуються справа наліво. Дія описується одним із наступних символів:
де v — масив вершин графа. Аргументом першої операції є вузол v[index1]. Результатом операцій f і b є вузол, що представляє аргумент для всіх інших операцій. Операції < і = є найлівішими, що вказані. Наприклад, для команди дії такі:
index0 = 4, index1 = 0
x = f(v[0]) // вперед до вузла 3, x = 3
y = f(x) // вперед створює вузол (4), y = 4
k(y) // виводить ключ (4)
V[4] = y // помістити вузол (4) у масив v
Вузол поміщається в масив v лише командою <. Спочатку масив містить вузли з ключами 0, 1, 2, 3, v[0]=0, v[1]=1, v[2]=2 і v[3]=3. Програма отримує вхідні дані з текстового файлу. Файл містить послідовність команд. Кожен вивід має бути на стандартний вихід з початку рядка. Порожніх рядків між ними немає. Пробіли можуть вільно зустрічатися у вхідних даних. Вхідні дані завершуються кінцем файлу.
Приклад вхідних/вихідних даних наведено в таблиці нижче.