$des$

$sol$

维护每个点的子树中的信息以及非子树的信息

$code$

#include <bits/stdc++.h>

using namespace std;

#define gc getchar()
inline int read() {
int x = ; char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} #define Rep(i, a, b) for(int i = a; i <= b; i ++) const int N = 1e5 + ; int f[N][], g[N][];
int n, p;
int deep[N], fa[N], size[N][], sizeg[N][]; struct Node {
int v, w, nxt;
} G[N << ];
int cnt, head[N]; void Link(int u, int v, int w) {
G[++ cnt].v = v, G[cnt].w = w, G[cnt].nxt = head[u]; head[u] = cnt;
} void Dfs1(int u, int f_, int dep) {
deep[u] = dep, fa[u] = f_;
for(int i = head[u]; ~ i; i = G[i].nxt) {
int v = G[i].v;
if(v == f_) continue;
Dfs1(v, u, dep + );
}
} void Dfs2(int u) {
for(int i = head[u]; ~ i; i = G[i].nxt) {
int v = G[i].v, w = G[i].w;
if(v == fa[u]) continue;
Dfs2(v);
if(w % ) {
size[u][] += size[v][];
size[u][] += size[v][];
size[u][] ++;
f[u][] += f[v][] + w * size[v][];
f[u][] += f[v][] + w * size[v][] + w;
} else {
size[u][] += size[v][];
size[u][] += size[v][];
size[u][] ++;
f[u][] += f[v][] + w * size[v][] + w;
f[u][] += f[v][] + w * size[v][];
}
}
} void Dfs3(int u) {
for(int i = head[u]; ~ i; i = G[i].nxt) {
int v = G[i].v, w = G[i].w;
if(v == fa[u]) continue;
if(w % ) {
sizeg[v][] ++;
sizeg[v][] += sizeg[u][] + size[u][] - size[v][];
sizeg[v][] += sizeg[u][] + size[u][] - size[v][] - ;
g[v][] += g[u][] + (f[u][] - f[v][]) - size[v][] * w;
g[v][] += w * (sizeg[u][] + size[u][] - size[v][] + );
g[v][] += g[u][] + (f[u][] - f[v][]) - size[v][] * w - w;
g[v][] += w * (sizeg[u][] + size[u][] - size[v][] - );
} else {
sizeg[v][] ++;
sizeg[v][] += sizeg[u][] + size[u][] - size[v][];
sizeg[v][] += sizeg[u][] + size[u][] - size[v][] - ;
g[v][] += g[u][] + (f[u][] - f[v][]) - size[v][] * w;
g[v][] += w * (sizeg[u][] + size[u][] - size[v][]);
g[v][] += g[u][] + (f[u][] - f[v][]) - size[v][] * w - w;
g[v][] += w * (sizeg[u][] + size[u][] - size[v][] + - );
}
Dfs3(v);
}
} int main() {
n = read(), p = read();
Rep(i, , n) head[i] = -;
Rep(i, , n - ) {
int u = read(), v = read(), w = read();
Link(u, v, w), Link(v, u, w);
}
Dfs1(, , );
Dfs2();
Dfs3();
Rep(pp, , p) {
int x = read();
int j = f[x][] + g[x][];
int o = f[x][] + g[x][];
cout << j << " " << o << "\n";
} return ;
}

83: 模拟赛 树形dp的更多相关文章

  1. [10.18模拟赛] 序列 (DP)

    [10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...

  2. 2019沈阳网赛树形dp

    https://nanti.jisuanke.com/t/41403 2019沈阳网络赛D题 树形dp.一棵树,求任意两个点的距离之和.u-v和v-u算两次.两点之间的距离分为三类,模3等于0,1,2 ...

  3. HDU 6201 2017沈阳网络赛 树形DP或者SPFA最长路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6201 题意:给出一棵树,每个点有一个权值,代表商品的售价,树上每一条边上也有一个权值,代表从这条边经过 ...

  4. hdu 4274 2012长春赛区网络赛 树形dp ***

    设定每个节点的上限和下限,之后向上更新,判断是否出现矛盾 #include<cstdio> #include<iostream> #include<algorithm&g ...

  5. 模拟赛20181016 dp

    给出1-n的序列插入一个bst: 给出T组询问,包含n,h分别代表点数为n,高度为h的树,求所有插入顺序的合法方案数,模1e9+7 样例输入 1 2  1 样例输出 2 #include<bit ...

  6. [8.16模拟赛] 玩具 (dp/字符串)

    题目描述 儿时的玩具总是使我们留恋,当小皮还是个孩子的时候,对玩具更是情有独钟.小皮是一个兴趣爱好相当广泛且不专一的人,这这让老皮非常地烦恼.也就是说,小皮在不同时刻所想玩的玩具总是会不同,而有心的老 ...

  7. 放棋游戏(NOIP模拟赛)(DP)

    没有原题... 囧.. [问题描述] 游戏规则是这样,有n(1<=n<=100)行格子,第一行由n个格子,第二行有n-1个格子,第三行由n-2个格子,……以此类推,第n行有1个格子.要求再 ...

  8. 98: 模拟赛-神光 dp

    $code$ #include <cstdio> #include <cstring> #include <algorithm> using namespace s ...

  9. NOIp模拟赛 现实(DP 拓扑)

    题目来源:by lzz \(Description\) 给定一张有向图,求对于哪些点,删除它和它的所有连边后,图没有环. \(n\leq 5\times10^5,m\leq 10^6\). \(Sol ...

随机推荐

  1. Gym102028G Shortest Paths on Random Forests 生成函数、多项式Exp

    传送门 神仙题-- 考虑计算三个部分:1.\(n\)个点的森林的数量,这个是期望的分母:2.\(n\)个点的所有森林中存在最短路的点对的最短路径长度之和:3.\(n\)个点的所有路径中存在最短路的点对 ...

  2. 解决Windows10关闭UAC后,开机启动项不生效的问题

    Windows10关闭UAC后,会发现启动项不生效. 运行输入gpedit.msc打开组策略(家庭版没有组策略功能) 依次展开计算机配置->Windows设置->安全设置->本地策略 ...

  3. java后台获取微信小程序openid

    一.jar包准备 1.在网盘下载 链接:https://pan.baidu.com/s/15HAAWOg_yn768g4s9IrcPg 提取码:hgj0 二.在pom文件中添加依赖 1.将外部的引入的 ...

  4. java 使用GraphQL-关联对象

    GraphQL并不会实现关联查询,数据关联需要程序自己实现 官网首页有介绍获取多个资源只需要一个请求,如想获取用户信息和身份证信息,原来需要先查用户信息,再通过用户id查询身份证信息,而在GraphQ ...

  5. Django form表单 组件

    目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...

  6. Java 之 函数式编程

    一.Lambda 的延迟执行 有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费.而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能 . 性能浪费的日志案例 注意:日志可以帮助 ...

  7. Appscan漏洞之跨站点请求伪造(CSRF)

    公司前段时间使用了Fortify扫描项目代码,在修复完这些Fortify漏洞后,最近又启用了Appscan对项目代码进行漏洞扫描,同样也是安排了本人对这些漏洞进行修复.现在,针对修复过的Appscan ...

  8. 配置CTS+

    Please let me know if below SAP KBA could help you: 1739340 - ESR/ID Export Using CTS+ option is dis ...

  9. Programmingbydoing

    http://www.programmingbydoing.com/ 1. Modulus Animation public static void modulusAnimation() throws ...

  10. 02- web-mini框架添加路由、MySQL(二)

    本篇在上篇的基础上为其增设路由功能,同时将上篇中的数据库中数据备份添加进去. 一.装饰器 在之前有介绍过为一个函数不改变源代码不改变原函数的调用方式下为其增设附加功能,需要用到装饰器,而在该上篇的we ...