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

GESP2025年3月认证C++八级( 第三部分编程题(2)割裂)

参考程序:

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;int n, k;                  // n: 节点数,k: 好点对数量
vector<int> e[N];          // 邻接表存树
int f[N][25];              // f[u][i] 表示 u 的第 2^i 个祖先
int dep[N];                // dep[u] 表示 u 的深度
int g[N], h[N];            // 差分数组,g 为好路径计数,h 为坏路径计数// 预处理 DFS:记录深度和倍增数组
void dfs(int u, int fa){dep[u] = dep[fa] + 1;f[u][0] = fa;for(int i = 1; i <= 20; i++){f[u][i] = f[f[u][i - 1]][i - 1]; // 倍增构建祖先表}for(auto v: e[u]){if(v == fa) continue;dfs(v, u);}
}// 倍增法求 LCA(最近公共祖先)
int lca(int u, int v){if(dep[u] < dep[v]) swap(u, v);int t = dep[u] - dep[v];for(int i = 0; i <= 20; i++)if(t & (1 << i)) u = f[u][i];for(int i = 20; i >= 0; i--)if(f[u][i] != f[v][i])u = f[u][i], v = f[v][i];return u == v ? u : f[u][0];
}int ans = 0;// 差分 DFS:累加好/坏路径经过的次数
void dfs2(int u, int fa){for(auto v: e[u]){if(v == fa) continue;dfs2(v, u);g[u] += g[v]; // 汇总好路径h[u] += h[v]; // 汇总坏路径}// 删除该点不会破坏任何好路径(即好路径数为 0),// 且能破坏坏路径(即坏路径数不为 0)if(g[u] == 0 && h[u] > 0)ans++;
}void solve(){cin >> n >> k;for(int i = 1; i < n; i++){int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}dfs(1, 0); // 预处理// 构建所有好路径差分for(int i = 1; i <= k; i++){int u, v;cin >> u >> v;int lc = lca(u, v);g[u]++; g[v]++; g[lc] -= 2;}// 构建坏路径差分int u, v;cin >> u >> v;int lc = lca(u, v);h[u]++; h[v]++; h[lc] -= 2;dfs2(1, 0); // 执行差分统计 + 判断可删点cout << ans << '\n';
}int main(){solve();
}

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

相关文章:

  • ICS丨Chapter 1 Introduction to Computer System
  • C++中chrono计时器的简单使用示例
  • CF1016赛后总结
  • 常见网络问题
  • 2025年第16届蓝桥杯嵌入式竞赛学习笔记(十四):RTC实时时钟
  • 算法--打表法
  • JS案例-基于Proxy的响应式数据
  • [密码学基础]国密算法深度解析:中国密码标准的自主化之路
  • 在已有的vue项目中使用vuex
  • 鸿蒙开发11-ARKUI框架
  • 谷歌称LLMs.txt类似于关键词元标签:SEO影响与应对策略
  • 提升电脑性能!Windows超级管理器,免费使用,功能全面!
  • 开启健康养生新旅程
  • 单片机毕业设计选题物联网计算机电气电子类
  • 数字孪生赋能管理系统,降本增效立竿见影
  • 使用Spring Validation实现参数校验
  • 使用 MicroPython 在 ESP32-S3 上驱动 WS2812 LED 彩虹灯
  • 第34讲|遥感大模型对比实战:SAM vs. CLIP vs. iSAM
  • Policy Gradient思想、REINFORCE算法,以及贪吃蛇小游戏(四)(完结)
  • 基于 Linux 环境的办公系统开发方案
  • 智能座舱架构与芯片 - 背景篇
  • 医院科研科AI智能科研支撑平台系统设计架构方案探析
  • 点云(Point Cloud)介绍
  • Cocos Creater打包安卓App添加隐私弹窗详细步骤+常见问题处理
  • 第33讲|遥感大模型在地学分类中的初探与实战
  • PyTorch :优化的张量库
  • 数据从辅存调入主存,页表中一定存在
  • websocket和SSE学习记录
  • 得物官网sign签名逆向分析
  • Qt QWidget介绍及学习方法路线分享