Найти длину простого пути в графе (циклическом) с максимальной суммой значений при заданных ограничениях

Дано: невзвешенный неориентированный граф (циклический) G(V,E), каждая вершина имеет два заданных значения (скажем, A и B), и нет двух смежных вершин с одинаковым значением A.
Найдите простой путь, имеющий максимальную сумму значений B вершин, со следующими ограничениями:
1) Этот путь содержит вершины с одинаковыми значениями A или может иметь не более двух разных значений A (эти значения должны быть чередующимися, поскольку никакие две соседние вершины не могут иметь одинаковое значение A)

инжир

На рис. Самый длинный простой путь начинается с вершины 2 и заканчивается на 5, все вершины имеют не более 2 различных значений 1 и 2, также они поочередно находятся в пути 1,2,1,2,1 и выводят суммы значений B.
Помните: вершина 6 может быть ответом, если значение B 6 равно 13, потому что сумма пути решения равна 12.

int dfs(int source, int parent, int score){
        for each vertex V(V!=p) connected to source:
           if(!vis[V]{
               if(A[parent]==A[V]){ 
                    recur : dfs(V,source,B[source]+score)
                 }
            }

  return score+B[source];
}

Это дает неправильный ответ. вершин <=1000000

0 ответов

Другие вопросы по тегам