博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU5647 Tree DP
阅读量:4947 次
发布时间:2019-06-11

本文共 506 字,大约阅读时间需要 1 分钟。

  这个题的意思是树的所有连通量的个数之和, 我们定义g[i]为以i为根的子数的个数, f[i]为以i为根的所有连通分量元素个数之和, 那么f[u] = f[u]*(g[v]+1) + f[v]*g[u];  g[u] = g[u]*(g[v]+1); 然后在回溯的时候计算一下即可, 代码如下:

#include 
#include
#include
using namespace std;typedef long long LL;const LL m = 1e9+7;vector
G[200000 + 100];int n;LL g[200000+100];LL f[200000+100];LL ans;void dfs(int u, int pre){ g[u]=1; f[u]=1; for(int i=0; i

 

转载于:https://www.cnblogs.com/xingxing1024/p/5302540.html

你可能感兴趣的文章
win7任务栏还原为xp样式
查看>>
PYTHON_3和2
查看>>
json数组的取值方法
查看>>
2019-7-15 vue01day
查看>>
SELECT LOCK IN SHARE MODE and FOR UPDATE
查看>>
Perl/Nagios – Can’t locate utils.pm in @INC
查看>>
目录导航「深入浅出ASP.NET Core系列」
查看>>
Git常用命令拾遗
查看>>
Canvas的drawImage方法使用
查看>>
自定义适用于手机和平板电脑的 Dynamics 365(四):窗体脚本
查看>>
阴影效果参考网址
查看>>
华为交换机端口镜像
查看>>
简易爬虫(爬取本地数据)
查看>>
一位菜鸟的java 最基础笔记
查看>>
python 进程间通信
查看>>
字符串和编码
查看>>
servlet(一)
查看>>
异常实验
查看>>
python \r与\b的应用、光标的含义
查看>>
深拷贝 vs 浅拷贝 释放多次
查看>>