Какие файлы перекомпилировать после изменения заголовков
Условие
Проект состоит из файлов .cpp и .h. Для каждого файла известен список файлов, которые он включает напрямую через #include (заголовки могут включать другие заголовки, циклов нет). Изменили несколько файлов. Единицу трансляции (.cpp) нужно перекомпилировать, если изменился она сама или любой заголовок, включённый в неё прямо или через цепочку.
Ввод: n (1 ≤ n ≤ 2000), затем n строк имя k зав₁ … зав_k (все зависимости это заголовки, перечисленные среди файлов). Затем k (1 ≤ k ≤ n) и строка с именами изменённых файлов.
Вывод: число .cpp, которые надо перекомпилировать, и во второй строке их имена по возрастанию (по кодам символов); если таких нет, вторая строка пустая.
Пример 1
Ввод:
4
main.cpp 1 util.h
util.h 1 base.h
base.h 0
net.cpp 1 base.h
1
base.h
Вывод:
2
main.cpp net.cpp
Пример 2
Ввод:
2
a.cpp 0
b.cpp 0
1
a.cpp
Вывод:
1
a.cpp
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Откуда undefined reference
Следующий вопрос
Модель линковщика: порядок статических библиотек