找到具有最大值和的图(循环)中的简单路径的长度,具有给定的约束

时间:2018-06-04 07:23:06

标签: path depth-first-search cyclic-graph

给定:未加权无向图(循环)G(V,E),每个顶点有两个值(比如A和B)给出,没有两个相邻顶点具有相同的A值。
找到具有顶点B值最大和的简单路径,具有以下约束:
1)此路径包含相同A值的顶点,或者它最多可以有两个不同的A值(这些值必须是交替的,因为没有两个相邻的顶点可以具有相同的A值)

fig

在图中。最长的简单路径从顶点2开始到5结束,所有顶点最多有2个不同的值1和2,它们在路径中以交替的方式1,2,1,2,1输出B值和。
请记住:如果B的值为6,则顶点6可能是答案,因为解决方案路径的总和仅为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 个答案:

没有答案