poj 1192 最优连通子集

//poj 1192 最优连通子集 (树型DP) /* 题意:给定一个平面整点集,点与点间在|x1-x2| + |y1-y2| = 1时相邻,且形成的图没有回路, 每个点有一个可正可负的权值,求最大权和连通子图。 题解:树型DP,dp[i][0]表示以i为根的子树上不包括i的最大权和,dp[i][1]表示包括i的最大权和。 */ #include #include #include #include using namespace std; const int inf = 1<<28; int n,m; struct Point { int x,y,c; }p[1010]; vector con[1010]; int dp[1010][2],mark[1010]; void dfs(int v) { mark[v]=1; dp[v][0]=0,dp[v][1]=p[v].c; int j; for (int i=0;i0) dp[v][1]+=dp[j][1]; } } int main() { scanf("%d",&n); for (int i=0;i

你可能感兴趣的:(动态规则)