Относительные пути
Большинство пользователей современных (и многих не столь современных) операционных систем знакомы с понятием пути, который представляет собой строку, указывающую маршрут в дереве файловой системы от заданного начального узла (каталога) до желаемого конечного узла. Абсолютный путь начинается с корня дерева и всегда начинается с "/". Относительный путь предоставляет аналогичную информацию, но начинается с текущего каталога (также называемого текущим рабочим каталогом), который является просто указанным узлом в дереве; относительный путь никогда не начинается с "/". Имена узлов в пути разделяются "/". Имя узла "." относится к текущему узлу, а имя узла ".." относится к родительскому узлу текущего узла (на один уровень выше в дереве). По соглашению, узел "/" является своим собственным родителем, поэтому "/.." и "/." эквивалентны "/".
Примеры: Рассмотрим несколько простых примеров на основе простой файловой системы, показанной слева. "/home/john" — это абсолютный путь к нижнему левому узлу в дереве, а "/var/mail" — это абсолютный путь к нижнему правому узлу в дереве. "/home/mary/.." — это абсолютный путь, эквивалентный "/home". Если текущий каталог — "/var", то относительный путь "../home/./mary" эквивалентен абсолютному пути "/home/mary". Наконец, если текущий каталог — "/var/mail", то относительный путь "../../home/john/." эквивалентен абсолютному пути "/home/john".
Дан путь P, который может быть либо абсолютным, либо относительным, и абсолютный путь C к текущему каталогу. Необходимо определить относительный путь S к тому же узлу, который идентифицируется P, так, чтобы S был кратчайшим возможным правильным относительным путем (то есть содержал наименьшее количество символов). Обратите внимание, что каждый путь должен содержать хотя бы один символ.
Входные данные
Будет несколько случаев для рассмотрения, каждый из которых будет содержать две строки ввода. Первая строка будет содержать путь P, а вторая строка будет содержать абсолютный путь C. Строка, следующая за последним случаем, будет содержать только конец строки. Имена узлов будут состоять только из 1 до 8 строчных буквенных символов, но "/", "." и ".." также могут появляться в путях. Ни одна строка ввода не будет содержать пробелов (символов табуляции или пробела). Входные и выходные пути никогда не будут длиннее 72 символов.
Выходные данные
Для каждого случая ввода отобразите пять строк следующим образом. На первой строке отобразите номер случая ввода (1, 2, …). На следующей строке отобразите "P = " (с отступом в три пробела) и значение P. На следующих двух строках отобразите C и S аналогичным образом. Последняя строка вывода для каждого случая должна быть пустой строкой.
Этот формат иллюстрируется в примерах.