Rebuild Tree

news/2024/10/6 8:47:59/文章来源:https://www.cnblogs.com/watersail/p/18446565
  • 考虑\(\prod s[i]\)的组合意义:就是在每个连通块内选一个点的方案数
  • 应用链式前向星存图时,应当舍弃“0-1”变换,从2号边开始编号【对于其他情况,也应尽量避免从0开始编号】
  • 枚举子树大小DP是O(n^2)的,但如果有m的限制,可以证明时间复杂度降至O(nm)
  • 因为出点和入点未必相同,所以不能简单地把连通块大小相乘;但相信最后的结果是美的,可以大胆猜想把m+1换成n
  • 加法式枚举的好处在于,保证了两边都是合法的,避免了复杂度的错误
点击查看代码
#include <bits/stdc++.h>
using namespace std;
vector<int>a[50005];
int s[50005],n,m;
const int mod=998244353;
long long f[50005][105][2],g[105][2];
int power(int n,int p)
{if(p==0){return 1;}long long tmp=power(n,p/2);if(p%2==1){return tmp*tmp%mod*n%mod;}return tmp*tmp%mod;
}
void dp(int n1)
{s[n1]=1;f[n1][0][0]=1;f[n1][0][1]=1;for(int i=0;i<a[n1].size();i++){if(!s[a[n1][i]]){dp(a[n1][i]);int k=a[n1][i];memcpy(g,f[n1],sizeof(f[n1]));memset(f[n1],0,sizeof(f[n1]));for(int j=0;j<=min(s[n1]-1,m);j++){for(int l=0;l<=min(s[k]-1,m);l++){if(j+l>m){break;}(f[n1][j+l][0]+=(g[j][0]*f[k][l][0]%mod))%=mod;(f[n1][j+l][1]+=(g[j][1]*f[k][l][0]%mod+g[j][0]*f[k][l][1]%mod))%=mod;if(j+l+1<=m){(f[n1][j+l+1][0]+=(g[j][0]*f[k][l][1]%mod))%=mod;(f[n1][j+l+1][1]+=(g[j][1]*f[k][l][1]%mod))%=mod;}}}s[n1]+=s[a[n1][i]];}}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cin>>n>>m;for(int i=1;i<n;i++){int u,v;cin>>u>>v;a[u].push_back(v);a[v].push_back(u);}dp(1);cout<<f[1][m][1]*power(n,m-1)%mod<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808919.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cisco Firepower 1000 Series FTD Software 7.6.0 ASA Software 9.22.1

Cisco Firepower 1000 Series FTD Software 7.6.0 & ASA Software 9.22.1Cisco Firepower 1000 Series FTD Software 7.6.0 & ASA Software 9.22.1 Firepower Threat Defense (FTD) Software - 思科防火墙系统软件 请访问原文链接:https://sysin.org/blog/cisco-firep…

从零开始学机器学习——网络应用

首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns 今天,我们的主要任务是按照既定的流程再次运行模型,并将其成功加载到 Web 应用程序中,以便通过 Web 界面进行调用。最终生成的模型将能够基于 UFO 目击事件的数据和经纬度信息,推断出事件发生的城市地…

Cisco Firepower 4100 Series FTD Software 7.6.0 ASA Software 9.22.1

Cisco Firepower 4100 Series FTD Software 7.6.0 & ASA Software 9.22.1Cisco Firepower 4100 Series FTD Software 7.6.0 & ASA Software 9.22.1 Firepower Threat Defense (FTD) Software - 思科防火墙系统软件 请访问原文链接:https://sysin.org/blog/cisco-firep…

Cisco Firepower 9300 Series FTD Software 7.6.0 ASA Software 9.22.1

Cisco Firepower 9300 Series FTD Software 7.6.0 & ASA Software 9.22.1Cisco Firepower 9300 Series FTD Software 7.6.0 & ASA Software 9.22.1 Firepower Threat Defense (FTD) Software - 思科防火墙系统软件 请访问原文链接:https://sysin.org/blog/cisco-firep…

读数据湖仓08数据架构的演化

读数据湖仓08数据架构的演化1. 数据目录 1.1. 需要将分析基础设施放置在数据目录(Data Catalogue)的结构中1.1.1. 元数据1.1.2. 数据模型1.1.3. 本体1.1.4. 分类标准1.2. 数据目录类似于图书馆的图书检索目录1.2.1. 先通过图书馆的图书检索目录进行查找,以便快速找到所需的图书…

VUE2常见问题以及解决方案汇总,vue+element ui 问题以及解决方案汇总(不断更新中)

解决vue项目中 el-table 的 @row-click 事件与行内点击事件冲突,点击事件不生效(表格行点击事件和行内元素点击事件冲突)需要阻止事件冒泡 问题描述 1.点击列的编辑按钮,会触发按钮本身事件,同时会触发行点击事件 2.点击列的元素,会触发本身事件,同时会触发行点击事件 需…

1分钟了解什么是docker和docker-compose?前后端必知必会技能GET啦

@目录前情提要Docker定义:主要功能:命令示例:其他Docker Compose定义:我为什么使用它?主要功能:命令示例:主要区别配置文件:命令行操作:依赖关系管理:实际应用场景单个服务:多服务应用:总结结语欢迎路过的小哥哥小姐姐们提出更好的意见哇~~ 前情提要 本文非常简短,如果需要详…

VUE2常见问题以及解决方案汇总(不断更新中)

vue子组件传递数据给父组件 子组件可以使用 $emit 向父组件传递数据。父组件监听这个事件,并在事件触发时接收数据。 上代码 子组件 (Child.vue) <template><button @click="sendDataToParent">Send Data to Parent</button> </template>&l…

1分钟搞懂K8S中的NodeSelector

@目录NodeSelector是什么?为什么使用NodeSelector?怎么用NodeSelector?POD配置示例yaml配置示例如何知道K8S上面有哪些节点,每个节点都有什么信息呢?1. 使用kubectl命令行工具查看所有节点及其标签2. 使用kubectl命令行工具查看特定节点的标签代码举例常见的NodeSelector节…

谷歌浏览器调试技巧

谷歌浏览器断点调试# “资源(Sources)”面板# 进入浏览器,点击F12,进入调试面板,点击source 切换按钮 会打开文件列表的选项卡。资源(Sources)面板包含三个部分:文件导航(File Navigator) 区域列出了 HTML、JavaScript、CSS 和包括图片在内的其他依附于此页面的文件。…

两种方案手把手教你多种服务器使用tinyproxy搭建http代理

@目录Tinyproxy是什么?特点功能安装方案一:Docker安装安装tinyproxy镜像,启动容器将内部8888端口至外部,ANY代表允许所有ip访问代理获得代理地址安装方案二:系统包管理器Tinyproxy 可以通过包管理器安装。以下是一些常见的 Linux 和 mac发行版的安装命令:MAC电脑Linux配置…

Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)

@目录Docker的数据持久化是什么?1.数据卷(Data Volumes)使用Docker 创建数据卷创建数据卷创建一个容器,将数据卷挂载到容器中的 /data 目录。进入容器,查看数据卷内容停止并重新启动容器,数据卷中的数据仍然存在再次进入容器,检查文件是否存在使用 Docker Compose 创建数…