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