斯坦纳树

这东西刚开始学觉得很显然是对的但是又挺奇怪的

题意:

给一张图,有k个特殊点,问最少用多少边将这些点连起来(k<=10,n<=100)

题解:

令dp[i][j]表示以i点为根(因为路径一定是一颗树),扩展出状态j

那么转移方程就是dp[i][j]=min(dp[i][k]+dp[i][j^k]);

                           dp[i][j]=min(dp[x][j]+1) (v[x][i]存在)

我们会发现,第二种dp是不满足无后效性的

所以考虑用spfa来转移

代码:

 

原文地址:https://www.cnblogs.com/yinwuxiao/p/8476662.html