Задание № 5755

Студент

Русанов Илья

Задача

Поиск поддерева

Состояние

Открыто

Назначено

03.09.2024, 10:23

На вход программе подаются два текстовых файла, каждый из которых содержит дерево. В каждой строке файла содержится ветка дерева по типу parent.child_node.nested_child_node. Узлы разделены символом . (точка). Утверждается, что дерево должно иметь только один корень, но нет ограничений на количество дочерних узлов (т.е. это не бинарное дерево). Если файл содержит два корня, то этот файл считается невалидным.

Пример файла:

services.blocklist.addons.checked
services.blocklist.clock_skew_seconds
services.blocklist.gfx.checked
services.blocklist.last_etag
services.blocklist.last_update_seconds
services.blocklist.onecrl.checked
services.blocklist.pinning.checked
services.blocklist.plugins.checked
services.sync.clients.lastSync
services.sync.clients.lastSyncLocal
services.sync.declinedEngines
services.sync.globalScore
services.sync.migrated
services.sync.nextSync
services.sync.tabs.lastSync
services.sync.tabs.lastSyncLocal

Необходимо написать программу, которая бы могла определять является ли одно дерево поддеревом другого.

Допускается использование контейнеров из стандартной библиотеки. В силу ограничений времени допускается некоторая неоптимальность решения с точки зрения производительности. Не допускаются решения приводящие к утечкам памяти.

Обязательные требования:

  1. Код должен быть модульным.
  2. Необходимо использовать STL.
  3. Для построения или обхода дерева нельзя использовать рекурсию.

Действия