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 ...
随机推荐
- iOS 基础类解析 - NSString、NSMutableString
iOS 基础类解析 - NSString 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...
- 持续集成(CI)工具------Hudson/Jenkins(Continuous Integration)安装与配置具体解释
本文同意转载.但请标明出处:http://blog.csdn.net/wanghantong/article/40985653/, 版权全部 文章概述: 一. 描写叙述了持续集成工具Hudson的安装 ...
- poj 3498 March of the Penguins(拆点+枚举汇点 最大流)
March of the Penguins Time Limit: 8000MS Memory Limit: 65536K Total Submissions: 4873 Accepted: ...
- SPOJ GSS 系列
来怒做GSS系列了: GSS1:https://www.luogu.org/problemnew/show/SP1043 这题就是维护一个 sum , mx , lmx , rmx,转移时用结构体就好 ...
- Java 发送短信
这是一个调用sms接口发短信的程序,支持同时发送的短信量并不是很大,只作为学习使用(当然如果你想内部使用也行) 源码:package com; import org.apache.commons.ht ...
- Labeling Balls(拓扑)
http://poj.org/problem?id=3687 看题意看了半天没看懂怎么回事,看完Discuss彻底凌乱了..后来看了题解才懂,就是逆向建图+拓扑排序,建图时要判重边. #include ...
- this引用逃逸问题
//this引用逃逸 // 1.构造器还未完成前,将自身this引用向外抛,使其他线程访问这个引用,进而访问到其未初始化的变量,造成问题 // 2.内部类访问外部类未初始化的成员变量 //3.多态继承 ...
- ASP之ViewState和IsPostBack
没怎么写过ASPX页面,今天在做增删改的界面的时候,修改出了问题. 根据传过来的ObjectID加载页面数据,赋值给TextBox控件后,修改控件的值回写数据库,发现值没有变化. 简单的例子如下: 然 ...
- AE错误代码解释
每当我们在进行AE开发,出现错误时经常会出现错误代码,但是我们并不知道它到底代表什么意思,这里的而错误编码我们可以对照着找到我们需要的时候常详细信息(问题是,经常还是会出现没有错误编码HRESULT ...
- [转]利用 NPOI 變更字體尺寸及樣式
本文转自:http://blog.cscworm.net/?p=1650 利用 NPOI 變更字體尺寸及樣式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...