zoukankan      html  css  js  c++  java
  • 叶子的颜色---经典树上dp

    挺简单的一个dp

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #include<vector>
    #define maxn 10100
    using namespace std;
    const int INF = 0x3f3f3f3f;
    vector<int>G[maxn];
    void insert(int be, int en) {
    	G[be].push_back(en);
    }
    int n, m;
    int h[maxn];
    int b[maxn];
    int vis[maxn];
    
    int dfs(int x, int fa) {
    	h[x] = 1;
    	b[x] = 1;
    	if (vis[x] == 0) {
    		b[x] = INF;
    	}
    	if (vis[x] == 1) {
    		h[x] = INF;
    	}
    	for (int i = 0; i < G[x].size(); i++) {
    		int p = G[x][i];
    		if (p == fa) continue;
    		dfs(p, x);
    		h[x] += min(b[p], h[p] - 1);	
    		b[x] += min(h[p], b[p] - 1);
    	}
    	return 0;
    }
    
    int main() {
    	memset(vis, -1, sizeof(vis));
    	scanf("%d %d", &n, &m);
    	
    	int op;
    	for (int i = 1; i <= m; i++) {
    		scanf("%d", &op);
    		vis[i] = op;
    	}
    	int be, en;
    	int root = n;
    	for (int i = 1; i < n; i++) {
    		scanf("%d %d", &be, &en);
    		insert(be, en);
    		insert(en, be);
    	}
    	dfs(n, -1);
    	printf("%d
    ", min(h[n], b[n]));
    	return 0;
    }
    

      

    寻找真正的热爱
  • 相关阅读:
    周末毒鸡汤时间
    MySQL 8.0发布,你熟悉又陌生的Hash Join?
    你可能需要的Kafka面试题与答案整理
    流程控制结构
    视图
    事务
    常用约束
    sql99语法的连接查询
    数据类型
    数据操作语句(DML)
  • 原文地址:https://www.cnblogs.com/lesning/p/11761621.html
Copyright © 2011-2022 走看看