B. Coloring a Tree

题目链接:

https://codeforces.com/contest/902/problem/B

题意:给你一颗树,原先是没有颜色的,需要你给树填色成指定的样子,每次填色的话,子树会和根节点变成同一种颜色,问需要多少次填色

题解:前向星建树,从每个父节点便利,如果父节点的颜色和子节点不一样就ans++吗,最后记得把第一次操作(根节点涂色的次数 给记上

代码如下:

#include <map>
#include <set>
#include <cmath>
#include <ctime>
#include <stack>
#include <queue>
#include <cstdio>
#include <cctype>
#include <bitset>
#include <string>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
#define fuck(x) cout<<"["<<x<<"]";
#define FIN freopen("input.txt","r",stdin);
#define FOUT freopen("output.txt","w+",stdout);
//#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int maxn = 3e5+;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9+;
int cnt;
int head[maxn],nxt[maxn],to[maxn];
int color[maxn];
int ans;
void add(int x,int y){
to[cnt]=y;
nxt[cnt]=head[x];
head[x]=cnt++;
} int main(){
#ifndef ONLINE_JUDGE
FIN
#endif
int n,x;
cnt=;
memset(head,-,sizeof(head));
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&x);
add(x,i);
}//前向星连边
for(int i=;i<=n;i++){
scanf("%d",&color[i]);
}
for(int i=;i<=n;i++){
for(int j=head[i];j!=-;j=nxt[j]){
//如果父节点和子树的节点不一样就操作一次
if(color[i]!=color[to[j]]) ans++;
}
}
cout<<ans+<<endl; //根节点的第一次操作算进去 }

最新文章

  1. openwrt-智能路由器hack技术(1)---&quot;DNS劫持&quot;
  2. 表单input中录入资料的检查方法及示例
  3. python的win32操作
  4. 14.高度最小的BST
  5. php配置步奏
  6. SSRS中加入书签功能及数据集窗口
  7. 16Aspx.com源码2014年7月详细
  8. Android开发 --微信支付开发(转载!)(开发工具:Eclipse)
  9. 第二篇:R语言数据可视化之数据塑形技术
  10. input type=&quot;file&quot;去掉取消默认原来选择的文件
  11. Winsock网络编程笔记(3)----基于UDP的server和client
  12. 通过自定义的URL Scheme启动你的App
  13. C语言第二次博客作业---分支结构 陈张鑫
  14. docker容器的安装与使用
  15. 如何隐藏nginx版本号
  16. Jenkins可用环境变量列表以及环境变量的使用(Shell/Command/Maven/Ant)
  17. Django -- 发送HTML格式的邮件
  18. android -------- Retrofit + RxJava2.0 + Kotlin + MVP 开发的 WanAndroid 项目
  19. 关于tomcat的session问题
  20. javascript单线程那些事

热门文章

  1. vuls安装记录
  2. Excel学习路径总结
  3. 10---git安装
  4. (数据科学学习手札09)系统聚类算法Python与R的比较
  5. KMP算法(查找子序列)
  6. WCF入门四[WCF的通信模式]
  7. LeetCode:14. Longest Commen Prefix(Easy)
  8. CDH,CM下载
  9. TensorLayer 中文文档
  10. 单链表无head各种操作及操作实验