Ясно, что путь разоблачения в отдельных случаях может быть слишком длинным.
Заведём массив логического типа, в котором всех явных заговорщиков пометим как true, а всех остальных — как false. Теперь пробежимся по массиву N раз, на каждой итерации проверяя, не выяснилось ли чего плохого про того, кто назначил текущего придворного. Если выяснилось, то текущего придворного также помечаем как true.
После этого в массиве все, помеченные как false, сохранят свои должности, ибо высота дерева назначений не может быть больше N (так как в дереве вершин всего не больше N).