在树上游玩【牛客tracker  每日一题】
在树上游玩时间限制1秒 空间限制1024M知识点动态规划网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述对于给定的由n nn个节点组成的无根树每一条边都可以被染上颜色初始时全部边均为白色。现在选中树上k kk个不同的点并将它们标记随后定义如果一条树边( u , v ) (u,v)(u,v)满足节点u uu和v vv同时被标记那么这条树边自动被染为红色不需要花费任何代价。现在你可以额外选择一些树边将它们染成红色每染一条边需要花费1 11点代价。请你计算最小的染色代价使得任意一个被标记的点都可以通过被染成红色的边到达至少一个未被标记的点。并输出不同的染色方案数量。输入描述第一行输入两个整数n , k ( 2 ≦ n ≦ 10 5 ; 1 ≦ k n ) n,k(2≦n≦10^5; 1≦kn)n,k(2≦n≦105;1≦kn)代表树的节点数、被标记的点数。第二行输入k kk个不同的整数a 1 , a 2 , … , a k ( 1 ≦ a i ≦ n ) a_1,a_2,…,a_k(1≦a_i≦n)a1​,a2​,…,ak​(1≦ai​≦n)代表被标记的点的编号。此后n − 1 n−1n−1行第i ii行输入两个整数u i , v i ( 1 ≦ u i , v i ≦ n , u i ≠ v i ) u_i,v_i(1≦u_i,v_i≦n,u_i≠v_i)ui​,vi​(1≦ui​,vi​≦n,ui​vi​)代表第i ii条树边连接u i u_iui​和v i v_ivi​​。输出描述在一行上输出两个整数代表最小的染色代价、满足条件的染色方案数量。由于染色方案数量可能很大请输出对10 9 7 10^971097取模后的结果。示例1输入11 6 8 2 4 7 9 6 8 10 8 9 1 8 1 11 1 3 11 2 5 6 2 5 4 2 7 6输出3 4说明在这个样例中树的形态如下图所示。解题思路本题是树的连通分量划分 乘法原理计数的经典题型核心是将问题转化为标记点连通块的出口边统计通过DFS遍历求解连通块并计数可选边最终得到最小代价与方案总数。1. 问题等价转化免费红边规则两端均为标记点的边会自动染成红色无需花费。这些边将所有标记点分割为若干个互不连通的「标记连通块」块内部的所有标记点已经通过免费红边互相可达。目标要求拆解每个标记点必须能通过红边到达至少一个未标记点等价于每个标记连通块至少额外染红一条通往未标记区域的边出口边让整个块连接到未标记的部分。最小代价结论最小染色代价 标记连通块的总个数每个块恰好染一条出口边即可达到最优。方案数结论每个连通块对应若干条可选的出口边一端在块内标记点、另一端为未标记点的边总方案数为所有连通块的可选边数相乘结果对10 9 7 10^971097取模。2. 算法实现DFS遍历连通块建图与标记用邻接表存储整棵树的边用布尔数组记录哪些节点是被标记的点。连通块遍历遍历所有节点每遇到一个未访问过的标记点就启动DFS遍历整个连通块递归仅沿着标记点延伸保证只在连通块内部遍历同时标记访问状态避免重复。遍历当前节点的所有邻居若邻居是未标记点则对应一条出口边计数加1。结果聚合每找到一个连通块最小代价加1总方案数乘以该块的出口边数全程取模。3. 复杂度分析时间复杂度O ( n ) O(n)O(n)每个节点和每条边仅被访问一次线性遍历整棵树。空间复杂度O ( n ) O(n)O(n)邻接表、标记数组与访问数组的空间开销适配十万级节点规模。总结核心逻辑免费红边将标记点划分为多个连通块每个块至少选一条出口边连接未标记区域最小代价为块的数量方案数为各块可选出口边数的乘积。关键操作标记点连通块划分、出口边逐条计数、乘法原理计算总方案数。效率保障单次DFS线性遍历无冗余计算十万级数据可毫秒级处理完成。代码简要说明全局数组定义masked[]布尔数组标记节点是否为被选中的标记点。vis[]访问标记数组用于DFS遍历连通块时去重。G[]邻接表存储树的所有无向边。DFS连通块遍历函数接收当前节点与出口边计数变量cnt引用传递直接修改外部计数。若当前节点已访问直接返回否则标记为已访问。遍历所有邻接节点若邻居是未访问的标记点递归深入扩展连通块若邻居未被访问必为未标记点说明找到一条出口边cnt自增1。主函数逻辑读入总节点数与标记点数将所有标记点对应位置标记为true。读入n-1条边构建无向邻接表。从1到n遍历所有节点每发现一个未访问的标记点启动DFS统计该连通块的出口边数最小代价加1总方案数乘以当前块的边数并对模数取余。最终按顺序输出最小代价与方案总数。输入优化关闭流同步并解绑cin与cout大幅提升十万级数据的读取与输出效率。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;constll MAXN200005;boolvis[MAXN]{false};boolmasked[MAXN]{false};vectorllG[MAXN];voiddfs(ll v,llcnt){if(vis[v])return;vis[v]true;for(ll i0;i(ll)G[v].size();i){if(masked[G[v][i]]!vis[G[v][i]])dfs(G[v][i],cnt);elseif(!vis[G[v][i]])cnt;}}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);ll n,k;cinnk;for(ll i0;ik;i){ll v;cinv;masked[v]true;}for(ll i0;in-1;i){ll u,v;cinuv;G[u].push_back(v);G[v].push_back(u);}ll ans1,cost0;for(ll i1;in;i){if(masked[i]!vis[i]){ll cnt0;dfs(i,cnt);cost;ans(ans*cnt)%mod;}}coutcost ans\n;return0;}

相关新闻

SMD封装红外测温传感器选型: S-D1与MLX90632的技术参数对照与场景适配

SMD封装红外测温传感器选型: S-D1与MLX90632的技术参数对照与场景适配

SMD封装红外测温传感器的市场背景在红外测温传感器的封装形态中,TO金属管壳封装占据了绝大多数份额,主要服务于家电、工业等传统领域。但随着消费电子和IoT设备的小型化趋势加速,SMD贴片封装的红外传感器正在成为一个快速增长的细分赛道。这类…

2026/10/9 8:18:03 阅读更多 →
[C++20/异步编程] 告别回调地狱与悬空引用爆雷!深度拆解无栈协程与编译期状态机微观世界

[C++20/异步编程] 告别回调地狱与悬空引用爆雷!深度拆解无栈协程与编译期状态机微观世界

C20 无栈协程与异步控制流:微观状态机与零堆分配压榨📌 导读摘要在构建高性能分布式总线(如 LanBus)或者语音信号流处理模块(如 STTOSView)时,高并发下的异步 I/O 调度与复杂的业务状态机是传统…

2026/10/9 7:40:34 阅读更多 →
国产MEMS红外测温传感器的技术突破: FW系列工程实测与参数解读

国产MEMS红外测温传感器的技术突破: FW系列工程实测与参数解读

国产MEMS红外传感器技术发展概览MEMS红外温度传感器是一种基于微机电系统工艺的热电堆式温度检测芯片,通过感知物体表面发射的红外辐射能量来计算温度。与传统的接触式测温方案(热电偶、NTC热敏电阻)不同,MEMS红外传感器无需与被测…

2026/10/8 2:16:50 阅读更多 →

最新新闻

力扣73与74:矩阵置零与搜索二维矩阵的原地算法与二分查找实战

力扣73与74:矩阵置零与搜索二维矩阵的原地算法与二分查找实战

1. 题目概览:两道二维矩阵的经典关卡1.1 力扣73题到底在考什么力扣73题叫做“矩阵置零”,给定一个 m x n 的矩阵,如果某个元素为 0,则要求将该元素所在的行和列的所有元素都置为 0。这道题我第一次做的时候觉得很简单,…

2026/10/10 4:09:38 阅读更多 →
力扣73矩阵置零与74搜索二维矩阵:刷透二维矩阵与二分查找

力扣73矩阵置零与74搜索二维矩阵:刷透二维矩阵与二分查找

最近我在集中刷力扣的二维矩阵题,第73题和第74题刚好是一对很有意思的组合:一个要求原地修改矩阵,一个要求高效查找矩阵中的目标值。标题看着都是“二维矩阵”,但背后的考察点完全不同,一个考验你对空间的使用能不能抠…

2026/10/10 4:09:38 阅读更多 →
一线工程师AI-Infra实战:从环境搭建到单机多卡与故障排查

一线工程师AI-Infra实战:从环境搭建到单机多卡与故障排查

1. 为什么一个一线工程师要啃AI-Infra这块硬骨头这两年跟同行聊天,话题绕来绕去最后总会落到一个点上:模型本身越来越像标准件,真正拉开差距的,是模型底下那层“看不见的地基”。我身边不少做后端、做大数据、甚至做传统运维的朋友…

2026/10/10 4:09:38 阅读更多 →
股票一天涨 177% 之后:mRNA 肿瘤疫苗真正要解决的不是疗效,是制造

股票一天涨 177% 之后:mRNA 肿瘤疫苗真正要解决的不是疗效,是制造

📋 目录 📈 开场:一天涨 177% 意味着什么✅ 三期到底证明了什么:三句话说清🔬 "一人一药"到底怎么工作⏱️ 4~6 周:手术窗口也是制造窗口⚖️ 个体化路线 vs 现货路线:不是单向比较&…

2026/10/10 4:09:38 阅读更多 →
微信小程序4S店管理系统源码数据库论文解析与实战

微信小程序4S店管理系统源码数据库论文解析与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:09:38 阅读更多 →
端云协同混合推理:WebGPU 显存不足时平滑无感回退云端 API 架构

端云协同混合推理:WebGPU 显存不足时平滑无感回退云端 API 架构

在探索端侧 WebGPU AI 的过程中,很多团队最容易犯的技术冒进,就是试图把“端侧推理”与“云端 API”完全对立起来:要么全盘押注云端大模型,每月背负极其沉重的高并发 GPU 服务器调用账单;要么极端地宣称“100% 纯本地运…

2026/10/10 4:08:38 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →