摘要:
求一条从一点出发来回的最长路。将问题转化为从某点出发的到达N点的两条不相交的路径。定义dp[i][j]表示第一个点到达i点,第二个点到达j点所经过的最多顶点数,初始状态为dp[1][1] = 1表示从1,1点出发经过的顶点数为1.动态方程:dp[i][j] = max( dp[i][k] + 1 ) 前提是 k,j 之间有边; 整个状态不去更新dp[i][i],因为如果更新了这个状态就可能使得最优解中包含了相同的点。代码如下:#include <cstring>#include <cstdio>#include <cstdlib>#include <m 阅读全文
posted @ 2012-08-22 10:57
沐阳
阅读(221)
评论(0)
推荐(0)