当前位置: 首页 > news >正文

【颜色平衡树 / E】

题目

思路

  • DFS暴力 60分

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
const int M = 5010;
int h[N], e[M], ne[M], idx;
int c[N], f;
int ans;
void add(int a, int b)  // 添加一条边a->b
{e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
bool check(int tmp[])
{int last = 0;for(int i = 1; i <= 5000; i++){if(!last && tmp[i]) last = tmp[i];else if(last && tmp[i]){if(last != tmp[i]) return false;last = tmp[i];}}return true;
}
void dfs(int u, int f[])
{int tmp[N] = {0};//根节点颜色算进子树tmp[c[u]] += 1;bool leaf = true;for(int i = h[u]; ~i; i = ne[i]){int j = e[i];dfs(j, tmp);leaf = false;}//判断平衡性if(leaf) ans++;else{if(check(tmp)) ans++;}//呈递颜色for(int i = 1; i <= 5000; i++)f[i] += tmp[i];
}
int main()
{int n;cin >> n;memset(h, -1, sizeof h);for(int i = 1; i <= n; i++){cin >> c[i] >> f;add(f, i);}int tmp[N] = {0};dfs(1, tmp);cout << ans;
}

http://www.lryc.cn/news/454591.html

相关文章:

  • 滑动窗口--(中篇)
  • Java性能调优:实战技巧与最佳实践
  • 排版套料系统设计说明
  • 算法修炼之路之二分查找
  • OpenAI预计明年将推出“代理”系统
  • 每日OJ题_牛客_重排字符串_贪心_C++_Java
  • Python 进阶部分详细整理
  • [ RK3566-Android11 ] 关于移植 RK628F 驱动以及后HDMI-IN图像延迟/无声等问题
  • 【黑马点评】 使用RabbitMQ实现消息队列——2.使用RabbitMQ监听秒杀下单
  • 业务封装与映射 -- OTUk/ODUk/OPUk开销帧结构
  • Vim基本用法
  • python 实现Tarjan 用于在有向图中查找强连通分量的算法
  • Qt开发技巧(十五)字符串去除空格,跨网段搜索不生效,设置图片显示失败问题,表格视图的批量删除,主动判断字串编码,开启向前查询的属性,画家类载入html来绘制
  • 【机器学习】智驭未来:探索机器学习在食品生产中的革新之路
  • Ubuntu 安装CUDA并使用Docker配置Pytorch环境
  • 【论文阅读】Simulating 500 million years of evolution with a language model
  • detectron2/layers源码笔记
  • LLM+知识图谱新工具! iText2KG:使用大型语言模型构建增量知识图谱
  • React基础-快速梳理
  • H.264编解码 - NALU详解
  • vSAN02:容错、存储策略、文件服务、快照与备份、iSCSI
  • 图解C#高级教程(四):协变、逆变
  • 详解CSS中的伪元素
  • paper_template
  • 【Bug】解决 Ubuntu 中 “error: Unable to Find Python3 Executable” 错误
  • CUDA与TensorRT学习六:模型部署-CNN、模型部署-YOLOv8检测器、部署BEVFusion模型
  • 防sql注入的网站登录系统设计与实现
  • 如何快速切换电脑的ip地址
  • 鸿蒙HarmonyOS之选择相册文件(照片/视频)方法
  • 【QT Qucik】C++交互:接收QML信号