Codeforces 902B - Coloring a Tree
传送门:http://codeforces.com/contest/902/problem/B
本题是一个关于“树”的问题。
有一棵n个结点的有根树,结点按照1~n编号,根结点为1。cv为结点v的色号,初始化为0。每一步选定一个结点v和一个色号x,于是v和v的所有后代结点均被染色,色号为x。
给定一个色号表{cv|v=1,2,...,n},满足1≤cv≤n,其中cv是结点v应该被染成的色号。求完成染色的最小操作步数。
注意到,若对结点v染色,色号为x,则v和v的所有后代结点均被染色,色号也为x。于是,应从根结点开始染色。设当前结点为v,v的子结点构成的集合为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的更多相关文章
- codeforces902B. Coloring a Tree
B. Coloring a Tree 题目链接: https://codeforces.com/contest/902/problem/B 题意:给你一颗树,原先是没有颜色的,需要你给树填色成指定的样 ...
- Codeforces 461B Appleman and Tree(木dp)
题目链接:Codeforces 461B Appleman and Tree 题目大意:一棵树,以0节点为根节点,给定每一个节点的父亲节点,以及每一个点的颜色(0表示白色,1表示黑色),切断这棵树的k ...
- Codeforces 1129 E.Legendary Tree
Codeforces 1129 E.Legendary Tree 解题思路: 这题好厉害,我来复读一下官方题解,顺便补充几句. 首先,可以通过询问 \(n-1\) 次 \((S=\{1\},T=\{ ...
- Codeforces 280C Game on tree【概率DP】
Codeforces 280C Game on tree LINK 题目大意:给你一棵树,1号节点是根,每次等概率选择没有被染黑的一个节点染黑其所有子树中的节点,问染黑所有节点的期望次数 #inclu ...
- codeforces 149D Coloring Brackets (区间DP + dfs)
题目链接: codeforces 149D Coloring Brackets 题目描述: 给一个合法的括号串,然后问这串括号有多少种涂色方案,当然啦!涂色是有限制的. 1,每个括号只有三种选择:涂红 ...
- Codeforces A. Game on Tree(期望dfs)
题目描述: Game on Tree time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Codeforces Round #781(C. Tree Infection)
Codeforces Round #781 C. Tree Infection time limit per test 1 second memory limit per test 256 megab ...
- 【Codeforces Round #453 (Div. 2) B】Coloring a Tree
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从根节点开始. 显然它是什么颜色.就要改成对应的颜色.(如果上面已经有某个点传了值就不用改 然后往下传值. [代码] #includ ...
- Codeforces 677C. Coloring Trees dp
C. Coloring Trees time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...
随机推荐
- python 003 os模块 example
import os for tmpdir in ('/tmp',r'C:/Users/Administrator/PycharmProjects/'): if os.path.isdir(tmpdir ...
- Kids Store - OpenCart 自适应主题模板 ABC-0022
KIDS STORE - OPENCART 自适应主题模板 ABC-0022 FEATURES Get FREE Lifetime Updates Get FREE On-Going Support ...
- Spring学习笔记——Spring事务仅仅对执行时异常回滚
我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚.岂不知Spring的事务默认仅仅有在发生执行时异常即:RunTimeException时才会发生事务,假设一个方法抛出Exception ...
- linux下多线程的调试
多线程调试的基本命令(均在gdb命令行使用): info threads ---- 显示当前可调试的全部线程.每个线程都有自己的线程ID,显示结果中前面有*的表示当前调试的线程. eg: ...
- hibernate初步
Hibernate开发步骤1.新创建工程并且导入相关的包 主要是hibernate.mysql相关的JAR包. 注意:新导入的hibernate相关的JAR包是否与你当前所使用的jdk版本是否兼容,且 ...
- UVA 10006(素数打表+快速幂)
当今计算机科学的一个重要的领域就是密码学.有些人甚至认为密码学是计算机科学中唯一重要的领域,没有密码学生命都没有意义. 阿尔瓦罗就是这样的一个人,它正在设计一个为西班牙杂烩菜饭加密的步骤.他在加密算法 ...
- mount -o remount,rw /
init=/bin/sh mount -o remount,rw /; sed -i 's/指定字符串/&希望插入的字符串/' 文件 在一文件中指定的字符后插入内容 sed -i 's/指定的 ...
- E20170821-mk
Dimension n. 尺寸; [复] 面积,范围; [物] 量纲; [数] 次元,度,维;
- Rocky(模拟)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2718 题意:如果没有障碍就按原方向直走,否则就 ...
- C#发送电子邮件代码记录
/// <summary> /// 发送电子邮件 /// </summary> /// <param name="Address">邮件地址&l ...