Предположим, у меня есть этот Направленный ациклический граф (DAG) , где есть направленное ребро от каждого узла (кроме узлов в нижней строке) к двум узлам под ним:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
Мне нужно найти путь через этот DAG, где сумма весов узлов максимальна. Вы можете перемещаться только по диагонали вниз-влево или вниз-вправо от узла в этом дереве. Так, например, 7, 3, 8, 7, 5 дадут максимальный путь в этом дереве.
Входной файл содержит DAG, отформатированный таким образом
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
У меня вопрос, какой алгоритм лучше всего будет найти максимальный путь, а также как это дерево будет представлено в C ++?
Веса узлов неотрицательны .