传送门:http://codeforces.com/contest/902/problem/B

本题是一个关于“树”的问题。

有一棵n个结点的有根树,结点按照1~n编号,根结点为1。cv为结点v的色号,初始化为0。每一步选定一个结点v和一个色号x,于是vv的所有后代结点均被染色,色号为x

给定一个色号表{cv|v=1,2,...,n},满足1cvn,其中cv是结点v应该被染成的色号。求完成染色的最小操作步数。

注意到,若对结点v染色,色号为x,则vv的所有后代结点均被染色,色号也为x。于是,应从根结点开始染色。设当前结点为vv的子结点构成的集合为S(v),则对S(v)中的每一个结点u,若有cu≠cv,则对结点u重新染色,色号为cu

则最终的答案为$ans=1+\sum_{v=1}^{n}{card\{u|u\in S,c_u\ne c_v\}}$。可通过DFS实现。参考程序如下:

#include <bits/stdc++.h>
using namespace std; #define MAX_N 10001 int c[MAX_N];
bool vis[MAX_N];
vector<int> adjvex[MAX_N]; int ans = ; void dfs(int v)
{
vis[v] = true;
for (int i = ; i < adjvex[v].size(); i++) {
int u = adjvex[v][i];
if (!vis[u]) {
if (c[u] != c[v]) ans++;
dfs(u);
}
}
} int main(void)
{
int n;
scanf("%d", &n);
for (int i = ; i <= n; i++) {
int p;
scanf("%d", &p);
adjvex[i].push_back(p);
adjvex[p].push_back(i);
}
for (int i = ; i <= n; i++)
scanf("%d", &c[i]);
dfs();
printf("%d\n", ans);
return ;
}

Codeforces 902B - Coloring a Tree的更多相关文章

  1. codeforces902B. Coloring a Tree

    B. Coloring a Tree 题目链接: https://codeforces.com/contest/902/problem/B 题意:给你一颗树,原先是没有颜色的,需要你给树填色成指定的样 ...

  2. Codeforces 461B Appleman and Tree(木dp)

    题目链接:Codeforces 461B Appleman and Tree 题目大意:一棵树,以0节点为根节点,给定每一个节点的父亲节点,以及每一个点的颜色(0表示白色,1表示黑色),切断这棵树的k ...

  3. Codeforces 1129 E.Legendary Tree

    Codeforces 1129 E.Legendary Tree 解题思路: 这题好厉害,我来复读一下官方题解,顺便补充几句. 首先,可以通过询问 \(n-1​\) 次 \((S=\{1\},T=\{ ...

  4. Codeforces 280C Game on tree【概率DP】

    Codeforces 280C Game on tree LINK 题目大意:给你一棵树,1号节点是根,每次等概率选择没有被染黑的一个节点染黑其所有子树中的节点,问染黑所有节点的期望次数 #inclu ...

  5. codeforces 149D Coloring Brackets (区间DP + dfs)

    题目链接: codeforces 149D Coloring Brackets 题目描述: 给一个合法的括号串,然后问这串括号有多少种涂色方案,当然啦!涂色是有限制的. 1,每个括号只有三种选择:涂红 ...

  6. Codeforces A. Game on Tree(期望dfs)

    题目描述: Game on Tree time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  7. Codeforces Round #781(C. Tree Infection)

    Codeforces Round #781 C. Tree Infection time limit per test 1 second memory limit per test 256 megab ...

  8. 【Codeforces Round #453 (Div. 2) B】Coloring a Tree

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从根节点开始. 显然它是什么颜色.就要改成对应的颜色.(如果上面已经有某个点传了值就不用改 然后往下传值. [代码] #includ ...

  9. Codeforces 677C. Coloring Trees dp

    C. Coloring Trees time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...

随机推荐

  1. Extjs grid 设置行字体颜色

    CustSuppGrid = Ext.create('Ext.grid.Panel', { title : '', // 标题头 iconCls : 'icon-grid', // 标题图标 stor ...

  2. C++对象内存布局 (一)

    一.前言 在看了皓哥的C++对象的布局之后:http://blog.csdn.net/haoel/article/details/3081328.感觉自己还是总是不能记得很清楚,故在此总结一下C++对 ...

  3. hdoj--1418--抱歉(水题)

     抱歉 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. hdu1533 费用流模板

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  5. linux 编译安装TRMPdump(libRTMP)

    需要编译libRTMP,首先需要安装配置编译环境.网上能够找到的资料多是在Windows环境编译.这里介绍一下在Linux系统中编译安装libRTMP,一来给后来者一个参考,二来也给自己做一个备忘录. ...

  6. bzoj 2152 聪聪可可(点分治模板)

    2152: 聪聪可可 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 3194  Solved: 1647[Submit][Status][Discuss ...

  7. [Apple开发者帐户帮助]四、管理密钥(1)创建私钥以访问服务

    私钥允许您访问和验证与某些应用服务(如APN,MusicKit和DeviceCheck)的通信.您将在对该服务的请求中使用JSON Web令牌(JWT)中的私钥. 所需角色:帐户持有人或管理员. 在“ ...

  8. php 过滤敏感关键词

    php 过滤敏感关键词 function badwords($content){ $keywords=M("config")->where("name='badwo ...

  9. HBase里的官方Java API

    见 https://hbase.apache.org/apidocs/index.html

  10. 5.29 @Value{name}无效时怎么办Could not resolve placeholder ‘name22’ in value “${name22}” 错误解决

    springboot Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder ‘name22’ in ...