zoukankan      html  css  js  c++  java
  • pku1192 最优连通子集

    http://poj.org/problem?id=1192

    题目大意:有一棵树,节点有整型的权值,

    如果定义,树中所有节点的权值和为树的权值,题目是求权值最大的子树

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <vector>
     4 
     5 #define N 1010
     6 
     7 using namespace std;
     8 
     9 int n, x[N], y[N], c[N], mark[N] = {0};
    10 vector<int> a[N];
    11 
    12 int abs(int x)
    13 {
    14     return x<0? -x: x;
    15 }
    16 
    17 int dfs(int x)
    18 {
    19     int i, j, temp, sum = c[x];
    20     for(i=0; i<a[x].size(); i++)
    21     {
    22         j = a[x][i];
    23         if(mark[j] == 0)
    24         {
    25             mark[j] = 1;
    26             temp = dfs(j);
    27             if(temp > 0)
    28             {
    29                 sum += temp;
    30             }
    31         }
    32     }
    33     return sum;
    34 }
    35 
    36 int main()
    37 {
    38     int i, j;
    39     scanf("%d", &n);
    40     for(i=1; i<=n; i++)
    41     {
    42         scanf("%d%d%d", x+i, y+i, c+i);
    43     }
    44     for(i=1; i<n; i++)
    45     {
    46         for(j=i+1; j<=n; j++)
    47         {
    48             if(abs(x[i]-x[j]) + abs(y[i]-y[j]) == 1)
    49             {
    50                 a[i].push_back(j);
    51                 a[j].push_back(i);
    52             }
    53         }
    54     }
    55     mark[1] = 1;
    56     printf("%d\n", dfs(1));
    57     return 0;
    58 }
  • 相关阅读:
    0x02 枚举、模拟、递推
    0x01 位运算
    bzoj3529: [Sdoi2014]数表
    bzoj5216: [Lydsy2017省队十连测]公路建设
    POJ1789Truck History
    最小生成树模板
    POJ1258Agri-Net
    POJ1860Currency Exchange(SPFA)
    POJ3083Children of the Candy Corn
    POJ2503Babelfish
  • 原文地址:https://www.cnblogs.com/yuan1991/p/pku1192.html
Copyright © 2011-2022 走看看