$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. Java多线程系列——锁的那些事

    引入 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率. 下面先带大家来总体预览一下锁的分类图 java锁的具体实现类 1.乐观锁 VS 悲观锁 乐观锁与悲观锁是 ...

  2. delphi indy Idhttp error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version

    在使用 indy 中的 idhttp 组件访问 https 网站时,出现如下错误: error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert pr ...

  3. c# 获取网页的爬虫程序

    转载于:https://www.cnblogs.com/wzk153/p/9145684.html HtmlAgilityPack相关详解: https://www.cnblogs.com/asxin ...

  4. mybatis异常:nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType

    异常详细 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.Builde ...

  5. mtd设备操作、jffs2

    安装mtd相关命令 手动安装mtd-utils,根据系统自行选择 mtd交叉编译:https://blog.csdn.net/zhangxuechao_/article/details/5212442 ...

  6. ConcurrentLinkedQueue (一)

    ConcurrentLinkedQueue 主要讲一下在JDK8中,ConcurrentLikedQueue是如何入队,出队的. 首先我们要明白,ConcurrentLikedQueue是一种安全的没 ...

  7. @JsonIgnore注解

    注解名称:@JsonIgnore 作用:在实体类向前台返回数据时用来忽略不想传递给前台的属性或接口. Eg:User实体中会有字段password字段,当返回用户信息给前台的时候,当然是不希望将pas ...

  8. kvm虚拟化环境中的时区设置

    guest OS时间保持 kvm技术是全虚拟化,guest OS并不需要做修改就可以直接运行,然而在计时方面却存在问题,guest OS计时的一种方式是通过时钟中断计数,进而换算得到,但host产生的 ...

  9. [daily] 使用thunderbird通过davmail代理访问Microsoft Exchange Service(OWA)

    前言 我需要接入某企业的邮件服务器, 该服务器没有开通pop3, 没有smtp, 没有imap, 只有exchange. 也就是说必须要使用outlook才能访问. 但是我没有outlook. 方案一 ...

  10. 190919 centos系统中python2卸载重装

    问题:某些原因卸载了python2,连带卸载了yum工具. 解决思路: 如果服务器没有什么东西,重装系统最省事.但是如果不允许重装,那就只能按部就班的恢复python2和yum. 步骤: 删除pyth ...