Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Какое эффективное решение можно написать к этой задаче?

Александр Варакин Ученик (72), на голосовании 2 месяца назад
Вот задача - https://informatics.msk.ru/mod/statements/view.php?id=26735&chapterid=113659#1

Вот моё решение, которое прошло, но может оно недостаточно эффективное в любом случае - https://codeshare.io/jAjm0D
Дополнен 3 месяца назад
! Рекурсия !
Голосование за лучший ответ
Мудрый Мудрец Ученик (162) 3 месяца назад
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;

unordered_map<int, vector<int>> children;
int count = 0;

void dfs(int node) {
count++;
for (int child : children[node]) {
dfs(child);
}
}

int main() {
int N;
cin >> N;
children.clear();

for (int i = 0; i < N; i++) {
int message, parent;
cin >> message >> parent;
if (parent != 0) {
children[parent].push_back(message);
}
}

int k;
cin >> k;

dfs(k);

cout << count << endl;
return 0;
}
Похожие вопросы