博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CQOI2009]叶子的染色
阅读量:4537 次
发布时间:2019-06-08

本文共 1812 字,大约阅读时间需要 6 分钟。

题目描述

给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根、内部结点和叶子均可)着以黑色或白色。你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点(哪怕是这个叶子本身)。 对于每个叶结点u,定义c[u]为从根结点从U的简单路径上最后一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。

输入输出格式

输入格式:

 

第一行包含两个正整数m, n,其中n是叶子的个数,m是结点总数。结点编号为1,2,...,m,其中编号1,2,... ,n是叶子。以下n行每行一个0或1的整数(0表示黑色,1表示白色),依次为c[1],c[2],...,c[n]。以下m-1行每行两个整数a,b(1<=a < b <= m),表示结点a和b 有边相连。

 

输出格式:

 

仅一个数,即着色结点数的最小值。

 

输入输出样例

输入样例#1:
5 30101 42 54 53 5
输出样例#1:
2

说明

M<=10000

N<=5021

 

 

解析:

树形dp

选择一个不是叶子节点的点做跟来遍历整棵树

 

dp[i][j]用来表示当前我们在i这个节点,当前这个节点染成j色的时候,子树染色需要的最小值

 

然后怎么转移呢,就是当他的子节点要有和他染成相同颜色的,就可以染到当前的点,他的子树如果染别的颜色的

 

个数就统计在自己身上

代码:

#include
#include
#include
#define MAXN 10010using namespace std;struct Edge{ int vi; int vj; int next;}edge[1001011];int head[MAXN];int now = 0;int rudu[MAXN];int c[MAXN];int dp[MAXN][2];void dfs(int now,int fa){ if(rudu[now] == 1) { dp[now][c[now]] = 1; dp[now][c[now]^1] = 0x7ffffff; return; } dp[now][1] = dp[now][0] = 1; for(int i = head[now];i;i = edge[i].next) { int vj = edge[i].vj; if(vj == fa)continue; dfs(vj,now); dp[now][1] += min(dp[vj][1] - 1,dp[vj][0]); dp[now][0] += min(dp[vj][1],dp[vj][0] - 1); }}void push(int vi,int vj){ now++; edge[now].vi = vi; edge[now].vj = vj; edge[now].next = head[vi]; head[vi] = now;}int main(){ int n,m; scanf("%d%d",&m,&n); for(int i = 1;i <= n;i++) { scanf("%d",&c[i]); } for(int i = 1;i < m;i++) { int vi,vj; scanf("%d%d",&vi,&vj); push(vi,vj); push(vj,vi); rudu[vi]++; rudu[vj]++; } rudu[m]++; dfs(m,0); printf("%d",min(dp[m][0],dp[m][1])); return 0;}

 

转载于:https://www.cnblogs.com/luoyibujue/p/7658418.html

你可能感兴趣的文章
Linux-慕课网学习笔记-3-1命令格式
查看>>
AJAX入门介绍
查看>>
[算法竞赛入门]第一章_算法概述
查看>>
SQL反模式笔记3——主键规范
查看>>
简单粗暴,微生物生态研究中常用数据库简介--转载
查看>>
Oracle -操作数据库
查看>>
c - 给分数分级别
查看>>
chrome 调试
查看>>
luoguP2774 方格取数问题
查看>>
tcp/ip协议各层的理解与
查看>>
python中的setdefault()方法
查看>>
转 VSFTP用户权限管控
查看>>
poj2420 A Star not a Tree? 模拟退火
查看>>
微信小程序--登录授权,一键获取用户微信手机号并登录
查看>>
[转载] C#面向对象设计模式纵横谈——13. Proxy代理模式
查看>>
JqueryEasyUI浅谈---视频教程公布
查看>>
ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致”...
查看>>
Javaweb之 servlet 开发详解1
查看>>
Restore IP Addresses
查看>>
DWR框架简单应用
查看>>