zoukankan      html  css  js  c++  java
  • bzoj 1131 简单树形dp

    思路:随便想想就能想出来啦把。。。  卡了我一个vector。。。

    #include<bits/stdc++.h>
    #define LL long long
    #define fi first
    #define se second
    #define mk make_pair
    #define pii pair<int,int>
    #define piii pair<int, pair<int,int> >
    
    using namespace std;
    
    const int N = 1e6 + 10;
    const int M = 10 + 7;
    const int inf = 0x3f3f3f3f;
    const LL INF = 0x3f3f3f3f3f3f3f3f;
    const int mod = 1e9 + 7;
    const double eps = 1e-6;
    
    int n, tot, head[N];
    LL cnt[N], sum[N], dp[N];
    
    struct Edge {
        int to, nx;
    } edge[N << 1];
    
    void add(int u, int v) {
        edge[tot].to = v;
        edge[tot].nx = head[u];
        head[u] = tot++;
    }
    
    void dfs1(int u, int p) {
        cnt[u] = 1;
        for(int i = head[u]; ~i; i = edge[i].nx) {
            int v = edge[i].to;
            if(v == p) continue;
            dfs1(v, u);
            cnt[u] += cnt[v];
            sum[u] += sum[v] + cnt[v];
        }
    }
    
    void dfs2(int u, int p) {
        if(p) {
            dp[u] = sum[u] + (dp[p] - (sum[u] + cnt[u]) + n - cnt[u]);
        }
    
        for(int i = head[u]; ~i; i = edge[i].nx) {
            int v = edge[i].to;
            if(v == p) continue;
            dfs2(v, u);
        }
    }
    
    int main() {
        memset(head, -1, sizeof(head));
        scanf("%d", &n);
        for(int i = 1; i < n; i++) {
            int u, v; scanf("%d%d", &u, &v);
            add(u, v);
            add(v, u);
        }
    
        dfs1(1, 0);
    
        dp[1] = sum[1];
        dfs2(1, 0);
    
        int ans = 1;
        for(int i = 1; i <= n; i++) {
            if(dp[ans] < dp[i]) {
                ans = i;
            }
        }
    
        printf("%d
    ", ans);
        return 0;
    }
    /*
    */
  • 相关阅读:
    maven的安装和配置以及搭建项目应用
    Spring MVC与Struts2的区别(仅本人浅薄的理解)?
    记录学习PYTHON
    Zookeeper可以干什么
    Redis与Memcache的区别
    Redis持久化的两种方式和区别
    Scala 柯里化
    Redis与Memcached的区别
    高并发的处理策略
    序列化
  • 原文地址:https://www.cnblogs.com/CJLHY/p/9183525.html
Copyright © 2011-2022 走看看