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

GESP2024年6月认证C++八级( 第三部分编程题(1)最远点对)

参考程序:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;// 图的邻接表
vector<int> g[N];// 每个点的颜色,0表示白色,1表示黑色
int col[N];// 树的节点个数
int n;// 每个节点的深度
int dep[N];// far[u][0] 表示在以 u 为根的子树中,距离 u 最远的白色点的深度
// far[u][1] 表示在以 u 为根的子树中,距离 u 最远的黑色点的深度
int far[N][2];// 最终答案
int ans = 0;// 深度优先搜索
void dfs(int x, int fa){dep[x] = dep[fa] + 1;             // 当前节点的深度比父节点多1far[x][col[x]] = dep[x];         // 以自己为根,颜色相同的最远点就是自己for(int i : g[x]){if(i != fa){dfs(i, x);               // 遍历子树// 枚举白-黑配对和黑-白配对情况for(int j = 0; j < 2; j++){// 如果当前节点 x 在颜色 j 有最远点,子节点 i 在颜色 j^1 有最远点if(far[x][j] != -1 && far[i][j^1] != -1){// 更新答案(两个路径深度减去2倍dep[x]得到真实路径长度)ans = max(ans, far[x][j] - dep[x] + far[i][j^1] - dep[x]);}}// 将子节点的信息合并回当前节点for(int j = 0; j < 2; j++){far[x][j] = max(far[x][j], far[i][j]);}}}// 当前节点自己向上传递,看它能不能与祖先形成不同色对if(far[x][col[x]^1] != -1){ans = max(ans, far[x][col[x]^1] - dep[x]);}
}int main(){cin >> n;memset(far, -1, sizeof far); // 初始化为-1表示没有颜色 j 的点for(int i = 1; i <= n; i++){cin >> col[i]; // 读入每个节点的颜色}// 构建无向树for(int i = 1; i < n; i++){int u, v;cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}dfs(1, 0); // 从根节点 1 开始 DFScout << ans << "\n"; // 输出最终答案
}

http://www.xdnf.cn/news/258985.html

相关文章:

  • 【愚公系列】《Manus极简入门》011-习惯养成教练:“习惯塑造师”
  • 【Java IO流】File类基础详解
  • 【IPMV】图像处理与机器视觉:Lec9 Laplace Blending 拉普拉斯混合
  • 常见工业汽车行业通讯接口一览表
  • vulkanscenegraph显示倾斜模型(6.2)-记录与提交
  • 数字智慧方案5877丨智慧交通项目方案(122页PPT)(文末有下载方式)
  • OpenLayers+WebGIS实时协作黑科技!多人同步标绘神器
  • 使用xlwings将两张顺序错乱的表格进行数据核对
  • 二叉搜索树的判断(双指针解决)
  • 深度残差网络ResNet
  • Controller层接收参数方式
  • 瑞萨 EZ-CUBE2 调试器
  • AI赋能新媒体运营:效率提升与能力突破实战指南
  • ZYNQ工业级串口方案:AXI UART 16550扩展RS-485实战(自动方向控制+Linux驱动)
  • AI大模型-微调和RAG方案选项
  • 友元函数和友元类
  • 【学习笔记】深入理解Java虚拟机学习笔记——第1章 走进Java
  • 4.1 模块概述
  • JavaScript基础-逻辑运算符
  • 【质量管理】现代TRIZ问题识别中的功能分析——组件分析
  • 网站怎样备份网站,备份网站数据的方法
  • 正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真
  • re题(52)BUUCTF-[FlareOn5]Minesweeper Championship Registration
  • 深度理解linux系统—— 进程优先级
  • 深入理解C++构造函数:从入门到实践
  • AXI中的burst有几种?都用在什么场景中
  • 复刻低成本机械臂 SO-ARM100 舵机配置篇(WSL)
  • HTML5+JavaScript实现连连看游戏之二
  • [预备知识]6. 优化理论(二)
  • Codeforces Round 1022 (Div. 2) A ~ C