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

洛谷 P10723 [GESP202406 七级] 黑白翻转-普及+/提高

题目描述

小杨有一棵包含 nnn 个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。小杨认为一棵树是美丽树当且仅当在删除所有白色节点之后,剩余节点仍然组成一棵树。

小杨每次操作可以选择一个白色节点将它的颜色变为黑色,他想知道自己最少要执行多少次操作可以使得这棵树变为美丽树。

输入格式

第一行包含一个正整数 nnn,代表树的节点数。

第二行包含 nnn 个非负整数 a1,a2,…,ana_1,a_2,\ldots,a_na1,a2,,an,其中如果 ai=0a_i=0ai=0,则节点 iii 的颜色为白色,否则为黑色。

之后 n−1n-1n1 行,每行包含两个正整数 xi,yix_i,y_ixi,yi,代表存在一条连接节点 xix_ixiyiy_iyi 的边。

输出格式

输出一个整数,代表最少执行的操作次数。

输入输出样例 #1

输入 #1

5
0 1 0 1 0
1 2
1 3
3 4
3 5

输出 #1

2

说明/提示

样例解释

将节点 111333 变为黑色即可使这棵树变为美丽树,此时删除白色节点 555,剩余黑色节点仍然组成一棵树。

数据范围

子任务编号数据点占比nnnaia_iai特殊条件
11130%30\%30%≤105\leq 10^51050≤ai≤10\leq a_i\leq 10ai1树的形态为一条链
22230%30\%30%≤105\leq 10^51050≤ai≤10\leq a_i\leq 10ai1只有两个节点颜色为黑色
33340%40\%40%≤105\leq 10^51050≤ai≤10\leq a_i\leq 10ai1

对于全部数据,保证有 1≤n≤1051\leq n\leq 10^51n1050≤ai≤10\leq a_i\leq 10ai1。**

solution

采用拓扑排序的思路,逐步将白色叶子节点删除,剩余的白色节点则是答案

代码

#include <iostream>
#include "bit"
#include "vector"
#include "unordered_set"
#include "set"
#include "queue"
#include "algorithm"
#include "bitset"
#include "cstring"using namespace std;int n, x, y, cnt[100001];
char a[100001];
vector<int> e[100001];int main() {cin >> n;if(n == 1){cout << 0;return 0;}int s = 0;for (int i = 1; i <= n; i++) {cin >> a[i];s += a[i] == '0';}for (int i = 1; i < n; i++) {cin >> x >> y;e[x].push_back(y);e[y].push_back(x);cnt[x]++;cnt[y]++;}queue<int> q;for (int i = 1; i <= n; i++) {if (cnt[i] == 1 && a[i] == '0') {q.push(i);}}int t = q.size();while (!q.empty()) {int u = q.front();q.pop();for (int v: e[u]) {cnt[v]--;if(cnt[v] == 1 && a[v] == '0'){q.push(v);t++;}}}cout << s - t;
}

结果

在这里插入图片描述

http://www.dtcms.com/a/290231.html

相关文章:

  • 机器学习week3-分类、正则化
  • FFmpeg:数字媒体的终极瑞士军刀
  • 北京市智能建筑协会走进智汇云舟:共探建筑行业数字化转型新路径
  • 进阶向:基于Python的电脑硬件监控工具(GUI + 系统信息采集)
  • 阿里云平台使用的ack创建的pod与服务器中的MongoDB不在同一网段如何解决
  • cmake到ROS的catkin_make的CMakeLists.txt文件有什么区别和联系
  • OpenCV中特征匹配算法GMS(Grid-based Motion Statistics)原理介绍和使用代码示例
  • Linux的目录
  • 【备忘录】Ubuntu 配置 NFS
  • 基于VSCode的nRF52840开发环境搭建
  • Vue3 面试题及详细答案120道 (1-15 )
  • 时序顶会基础创新知识点-小波变换篇上
  • SQL通用增删改查
  • windows安装运行triton出现的问题
  • 【每天一个知识点】非参聚类(Nonparametric Clustering)
  • 【深度学习笔记 Ⅱ】11 学习率衰减
  • I2S音频的时钟
  • 第11天 |openGauss逻辑结构:数据库管理
  • 音视频学习(四十二):H264帧间压缩技术
  • CCLink IE转ModbusTCP网关与三菱PLC通讯无纸记录器
  • 大腾智能国产3D CAD软件正式上架华为云云商店
  • OR条件拆分:避免索引失效的查询重构技巧
  • Kafka 如何优雅实现 Varint 和 ZigZag 编码
  • 代码随想录算法训练营第二十七天
  • LLMs之Grok系列:Grok-4的简介、安装和使用方法、案例应用之详细攻略
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现打架检测(C#代码,UI界面版)
  • Go-通俗易懂垃圾回收及运行过程
  • 每日面试题11:JVM
  • Ubuntu 22.04 安装 Jdk 8和 Tomcat (安装包形式)
  • Three.js 从零入门:构建你的第一个 Web 3D 世界