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

[GESP202406 七级] 黑白翻转

输入样例

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

输出样例

2
#include <iostream>
#include <vector>
using namespace std;const int N = 1e5 + 5;
vector<int> t[N];
int n, a[N], ans;// 深度优先搜索函数
void dfs(int fa, int x) {bool has_black_child = false;for (int i = 0; i < t[x].size(); i++) {if (t[x][i] != fa) {dfs(x, t[x][i]);if (a[t[x][i]] == 1) {has_black_child = true;}}}// 如果当前节点是白色且有黑色子节点,则将其变黑if (a[x] == 0 && has_black_child) {ans++;a[x] = 1;}
}int main() {cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}// 读取边信息for (int i = 1; i < n; i++) {int u, v;cin >> u >> v;t[u].push_back(v);t[v].push_back(u);}// 找到第一个黑色节点开始深度优先搜索for (int i = 1; i <= n; i++) {if (a[i] == 1) {dfs(0, i);break;}}// 输出最少操作次数cout << ans << endl;return 0;
}    

 

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int ans;
int n;
int a[N];
vector<int> vis[N];//存储关系 
void dfs(int x,int f){for(int i=0;i<vis[x].size();i++){int y=vis[x][i];if(y==f)continue;dfs(y,x);if(a[y]==1&&a[x]==0){a[x]=1;ans++;}}
}
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<n;i++){int x,y;cin>>x>>y;vis[x].push_back(y);vis[y].push_back(x);//构建父子关系 }int k=0;for(int i=1;i<=n;i++){if(a[i]==1){k=i;break;}}dfs(k,0);//开始遍历 cout<<ans;//输出个数 return 0;
}

相关文章:

  • FAISS(Facebook AI Similarity Search)
  • 单片机-STM32部分:6、不同编程方式-寄存器、标准库、HAL库、LL库
  • Scrapy框架之Scrapyd部署及Gerapy分布式爬虫管理框架的使用
  • MCU缓存架构设计与优化策略
  • MySQL关于锁的面试题
  • 【详细教程】ROC曲线的计算方式与绘制方法详细介绍
  • 基于SeaFormer的YOLOv8性能提升策略—轻量高效注意力模块Sea_AttentionBlock在语义分割中的应用研究
  • 性能比拼: HTTP/2 vs. HTTP/3
  • 【算法】随机快速排序和随机选择算法
  • QT编程练习20250507
  • 【C++】C++中this指针的介绍及使用
  • k8s部署OpenELB
  • RT Thread Studio创建软件和硬件RTC工程
  • ROBOVERSE:面向可扩展和可泛化机器人学习的统一平台、数据集和基准
  • SQL 子查询
  • 如何设置飞书多维表格,可以在扣子平台上使用
  • 《硬件视界》专栏介绍(持续更新ing)
  • Selenium Web自动化测试学习笔记(一)
  • C++命名空间、内联与捕获
  • vue3父组件调用子组件方法
  • 经济日报金观平:充分发挥超大规模市场优势
  • 2025年两岸关系研讨会在上海开幕
  • 王毅同巴基斯坦副总理兼外长达尔通电话
  • 婚姻登记“全国通办”首日,上海虹口登记中心迎来“甜蜜高峰”
  • 可量产9MWh超大容量储能系统亮相慕尼黑,宁德时代:大储技术迈入新时代
  • 山寨“小米”智能马桶、花洒销售额过亿,被判赔3500万元