JZOJ 2678. 树B
题目
Description
已知无向连通图G由N个点,N-1条边组成。每条边的边权给定。现要求通过删除一些边,将节点1与另M个指定节点分开,希望删除的边的权值和尽量小,求此最小代价。
Input
每个输入文件中仅包含一个测试数据。
第一行包含两个整数N,M。
第二行至第N行每行包含3个整数,A、B、C,表示节点A与节点B有一条边相连,边权为C。
第N+1行至第N+M行每行包含一个整数X,表示要求与节点1分开的节点。
Output
输出文件仅包含一个整数,表示最小代价。
Sample Input
3 2 1 2 3 1 3 5 2 3
Sample Output
8
Data Constraint
Hint
对于20%的数据,2<=N<=10
对于100%的数据,2<=N<=10^6
分析
- 树形DP
- 设f[x]表示以x为根节点删除我需要点的最小值
- f[x]+=min(f[y],map[x][y])
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 struct node{ 4 int u,v,w,nx; 5 }g[1000011*2]; 6 int cnt; 7 int li[1000001*2]; 8 void add(int u,int v,int w) 9 { 10 g[++cnt].u=u; g[cnt].v=v; g[cnt].w=w; g[cnt].nx=li[u]; li[u]=cnt; 11 g[++cnt].u=v; g[cnt].v=u; g[cnt].w=w; g[cnt].nx=li[v]; li[v]=cnt; 12 } 13 int flag[1000001]; 14 int dp[1000001]; 15 int b[1000001]; 16 void dfs(int x) 17 { 18 int ff=0; 19 flag[x]=1; 20 for (int i=li[x];i;i=g[i].nx) 21 { 22 int y=g[i].v; 23 if (!flag[y]) 24 { 25 if (b[g[i].v]) 26 ff+=g[i].w; 27 else 28 { 29 dfs(y); 30 ff+=min(dp[y],g[i].w); 31 } 32 } 33 } 34 dp[x]=ff; 35 } 36 int main () 37 { 38 int n,m; 39 cin>>n>>m; 40 for (int i=1,x,y,z;i<=n-1;i++) 41 { 42 cin>>x>>y>>z; 43 add(x,y,z); 44 } 45 for (int i=1,x;i<=m;i++) 46 { 47 cin>>x; 48 b[x]=1; 49 } 50 memset(dp,0x3f,sizeof(dp)); 51 dfs(1); 52 cout<<dp[1]; 53 }
转载于:https://www.cnblogs.com/zjzjzj/p/11146436.html
JZOJ 2678. 树B相关推荐
- JZOJ 6276.树【扫描线】【线段树】
233 题目: 题意: 分析: 代码: 题目: 传送门 题意: 有一棵无根树,现在有mmm个点对x,yx,yx,y,要求在任意u,vu,vu,v的简单路径上不能既经过xxx又经过yyy 问一共有多少路 ...
- [概率期望][树形DP][LCA]JZOJ 5814 树
Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...
- [树形dp] Jzoj P5814 树
Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...
- [JZOJ 5814] 树
题目:从u到v经过多少条边. 思路: 考虑他是怎么走的?? 从\(u\)到\(v\)一定是\(fa[u]\),\(fa[fa[u]]\),反正就是走\(LCA\),那么如果算出每个点到父亲的期望步数, ...
- 【dfs】树(jzoj 2753)
树 jzoj 2753 题目大意: 给你一棵树,每一个点都一个值,现在问你有多少条路径可以满足以下条件: 1.方向都是向下 2.路径上的点的值总和为S 输入样例 3 3 1 2 3 1 2 1 3 输 ...
- 【线段树】矮人排队(jzoj(gz) 3236)
矮人排队 jzoj (gz)3236 题目大意: 有n个人,高度分别为1,2--n(高度按输入来看),现在有两种操作 1:把第x个人和第y个人换一下 2:询问高度为A,A+1--B这B-A+1个人是否 ...
- [JZOJ 5909] [NOIP2018模拟10.16] 跑商(paoshang) 解题报告 (圆方树)
题目链接: https://jzoj.net/senior/#contest/show/2529/2 题目: 题目背景: 尊者神高达很穷,所以他需要跑商来赚钱 题目描述: 基三的地图可以看做 n 个城 ...
- JZOJ 7036. 2021.03.30【2021省赛模拟】凌乱平衡树(平衡树单旋+权值线段树)
JZOJ 7036. 2021.03.30[2021省赛模拟]凌乱平衡树 题目大意 给出两棵Treap,大小分别为 n , m n,m n,m,每个点的 p r i o r i t y priorit ...
- JZOJ 5814. 【NOIP提高A组模拟2018.8.14】 树
梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地选择一条走过去, ...
最新文章
- 智能车竞赛技术报告 | 智能车视觉 - 首都师范大学 - 首师智能视觉
- 如何用 Swift 语言构建一个自定控件
- CCIE-LAB-第九篇-BGP下一跳+EBGP防环+伪装AS+通过标签过滤路由
- mysql书写规则_每天10分钟带你学会MySQL(二)SQL语句的基本书写规则
- 匿名内部类 handler
- java synchronized静态同步方法与非静态同步方法,同步语句块
- 【MyBatis框架】mapper配置文件-foreach标签
- 曼昆经济学原理(微经部分)笔记整理
- Maven—Windows操作系统中安装配置Maven环境
- 微信小程序代码提交步骤
- 如何用Python快速计算股票的Beta系数并排序存入Excel表中
- macOS Catalina 以上版本使用不了 PPTP协议的(shimo 无法正常使用)
- STC15内部ADC测电压
- python重复抽奖_python—抽奖程序
- 【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付
- 磊科wifi linux驱动下载,磊科随身WiFi驱动
- SQL Server 2012 联机丛书
- APP自动化测试框架搭建(八)--ATX Server2多设备集群环境搭建
- 埃哲森:物联网市场潜力达万亿美元
- 计算机二级c类考试试题及答案,2016最新计算机二级C上机考试试题及答案
热门文章
- jQuery.each() 和原生JS的for loop效率对比
- SAP CRM Fiori应用之My Account功能一览
- Jerry的SAP Kyma和Kubernetes讲座的幻灯片分享
- SAP CRM, C4C和Hybris的后台作业
- pscs6插件_PS插件-灯光工厂
- php 追查框架生命周期,ThinkPHP5框架的生命周期:从发出请求到响应完成
- delphi Oracle导出多个表,Oracle数据库自动备份工具(Delphi源码)
- sarscape 将dem文件转化成stl_STL源码剖析 阅读笔记(一)介绍
- 公众号滑动图代码_如何实现微信公众号文章“滑动查看更多”
- python内建函数是什么意思_Python3内建函数简介,Python3内建函数详解