Чекер для работы с файловой системой - лабиринт

Задача

Общая постановка задачи

Дана некоторая корневая директория, в которой может находиться некоторое количество папок, в том числе вложенных. В этих папках хранятся некоторые текстовые файлы, имеющие имя вида <filename>.txt.

Требуется найти файл, который содержит строку «Minotaur» (файл-минотавр).

Файл, с которого следует начинать поиск, всегда называется file.txt (но полный путь к нему неизвестен).

Каждый текстовый файл, кроме искомого, может содержать в себе ссылку на название другого файла (эта ссылка не содержит пути к файлу). Таких ссылок может быть несколько.

Пример:

@include a2.txt @include b5.txt @include a7.txt

Пример тупика:

Deadlock

Программа должна вывести правильную цепочку файлов (с путями), которая привела к поимке файла-минотавра.

Пример

@include file1.txt @include file4.txt @include file5.txt
Deadlock
@include file3.txt
Minotaur
@include file2.txt @include file1.txt
Deadlock

Правильный ответ:

root/add/add/file.txt
root/add/mul/add/file4.txt
root/add/mul/file2.txt
root/add/mul/file3.txt

! Цепочка, приводящая к файлу-минотавру может быть только одна. ! Общее количество файлов в каталоге не может быть больше 200. ! Циклических зависимостей быть не может. ! Файлы не могут иметь одинаковые имена.