【ICPC】The 2021 ICPC Asia Shanghai Regional Programming Contest G

Edge Groups

#树形结构 #组合数学 #树形dp

题目描述

Given an undirected connected graph of n n n vertices and n − 1 n-1 n1 edges, where n n n is guaranteed to be odd. You want to divide all the n − 1 n-1 n1 edges to n − 1 2 \frac{n-1}{2} 2n1 groups under following constraints:

  • There are exactly 2 edges in each group
  • The 2 edges in the same group share a common vertex

Determine the number of valid dividing schemes modulo 998244353 998244353 998244353. Two schemes are considered different if there are 2 edges that are in the same group in one scheme but not in the same group in the other scheme.

输入格式

The first line contains one integer n ( 3 ≤ n ≤ 1 0 5 ) n\,(3\le n \le 10^5) n(3n105), denoting the number of vertices.

Following n − 1 n-1 n1 lines each contains two integers u , v ( 1 ≤ u ≤ v ≤ n ) u,v\ (1 \leq u \leq v \leq n) u,v (1uvn), denoting that vertex u , v u,v u,v are undirectedly connected by an edge.

It is guaranteed that n n n is odd and that the given graph is connected.

输出格式

Output one line containing one integer, denoting the number of valid dividing schemes modulo 998244353 998244353 998244353.

样例 #1

样例输入 #1

7
1 2
1 3
1 7
4 7
5 7
6 7

样例输出 #1

3

解题思路

观察发现,如果子树的边的个数为奇数的时候,需要和选一条边和父节点的连边组合,剩下的边可以两两组合。

如下图:

在这里插入图片描述

其中, n n n条边两两组合的方案数共有 ∏ i = 1 i ≤ n f a c t i , i ∈ { o d d } \prod_{i=1}^{i\leq n}fact_i \ , i \in \{odd\} i=1infacti ,i{odd} 即不大于 n n n的奇数的阶乘之积,可以通过数学归纳法证明,这里不多赘述。

因此,转移方程为:

f u = f u ∏ v ∏ i = 1 i ≤ n f v f a c t i ( v ∈ c h i l d u , i ∈ { o d d } ) f_u = f_u\prod_v \prod_{i=1}^{i \leq n} f_v fact_i \ ( v \in child_u,i \in \{ odd\}) fu=fuvi=1infvfacti (vchildu,i{odd})

代码

const int N = 1e6 + 7;vector<int> e[N];
int f[N], sz[N];void dfs(int u, int fa){f[u] = 1;for (auto &v : e[u]) {if (v == fa) continue;dfs(v, u);if (sz[v] % 2 == 0) sz[u]++;f[u] = f[u] * f[v] % mod;}if (sz[u] >= 2) {for (int i = 1; i <= sz[u]; i += 2) {f[u] = f[u] * i % mod;}}
}void solve()
{int n;cin >> n;for (int i = 1; i <= n - 1; i++) {int u, v;cin >> u >> v;e[u].push_back(v), e[v].push_back(u);}dfs(1, -1);cout << f[1]<< endl;
}signed main() {ios::sync_with_stdio(0);std::cin.tie(0);std::cout.tie(0);int t = 1;//cin >> t;while (t--) {solve();}
};

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

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

相关文章

最全方案解决Android Studio中使用lombok插件错误: 找不到符号的问题

直接原因 先直接说原因&#xff0c;小部分是因为配置错误导致的&#xff0c;注意查看下面的步骤即可&#xff0c;另一大部分是因为Java和Kotlin混编的问题&#xff0c;lombok和kapt冲突&#xff0c;其实你用了kotlin基本不需要用lombok&#xff0c;多此一举&#xff01;所以可…

SpringBoot实现电子文件签字+合同系统!

一、前言 二、项目源码及部署 1、项目结构及使用框架 2、项目下载及部署 三、功能展示 一、前言 今天公司领导提出一个功能,说实现一个文件的签字+盖章功能,然后自己进行了简单的学习,对文档进行数字签名与签署纸质文档的原因大致相同,数字签名通过使用计算机加密来验证 (…

集合框架09:泛型概述、泛型类、泛型接口

1.泛型概述 泛型的本质是参数化类型&#xff0c;把类型作为参数传递&#xff1b; 常见有泛型类、泛型接口、泛型方法 语法&#xff1a;<T,...> T称为类型占位符&#xff0c;表示一种引用类型&#xff1b; 好处&#xff1a;1.提高代码的重用性&#xff1b;2.防止类型类…

python中的数组模块numpy(一)(适用物联网数据可视化及数据分析)

目录 一、创建数组对象array&#xff0c;认识数组的格式 二、类型比较 三、arange函数&#xff1a;创建一维等差数组 四、专门创建数组的linspace、logsapace函数 1.linspace函数&#xff1a;创建等差数列数组。 2.logsapce函数&#xff1a;创建等比数列数组。 3.zeros函数…

通信工程学习:什么是VHDL超高速集成电路硬件描述语言

VHDL&#xff1a;超高速集成电路硬件描述语言 VHDL&#xff0c;全称为Very-High-Speed Integrated Circuit Hardware Description Language&#xff0c;即超高速集成电路硬件描述语言&#xff0c;是一种用于电路设计的高级语言。以下是关于VHDL的详细介绍&#xff1a; 一、起源…

数据结构——排序(2)

数据结构——排序(2) 文章目录 数据结构——排序(2)前言&#xff1a;1.快速排序&#xff08;非递归版本&#xff09;基本步骤&#xff1a;代码实现 2.归并排序算法思想&#xff1a;核心步骤&#xff1a;代码实现&#xff1a;特征总结&#xff1a; 3.计数排序&#xff08;非比较…

【ubuntu】ubuntu20.04安装cuda12.6与显卡驱动

目录 1.安装cuda12.6 2.安装显卡驱动 1.安装cuda12.6 https://developer.nvidia.com/cuda-toolkit-archive https://developer.nvidia.com/cuda-12-6-0-download-archive?target_osLinux&target_archx86_64&DistributionUbuntu&target_version20.04&target_…

[MyBatis-Plus]快速入门

介绍 MyBatis-Plus是MyBatis的好朋友, 与MyBatis配合, 实现开发效率的提高 官网: 特点: 润物细无声: 只做增强不做改变, 引入它不会对现有工程产生影响, 如丝般顺滑效率自上: 只需简单配置, 即可快速进行单表CRUD, 从而节省大量时间功能丰富: 代码生产, 自动分页, 逻辑删除, …

【重学 MySQL】六十六、外键约束的使用

【重学 MySQL】六十六、外键约束的使用 外键约束的概念关键字主表和从表/父表和子表外键约束的创建条件外键约束的特点外键约束的创建方式外键约束的删除外键约束的约束等级外键约束的级联操作外键约束的示例外键约束的作用开发场景阿里开发规范 在MySQL中&#xff0c;外键约束…

雷池社区版配置遇到问题不要慌,查看本文解决

很多新人不太熟悉反向代理&#xff0c;所以导致配置站点出现问题 配置问题 记录常见的配置问题 配置后攻击测试没有拦截记录 检查访问请求有没有真实经过雷池 有很多新人配置站点后&#xff0c;真实的网站流量还是走的源站&#xff0c;导致雷池这边什么数据都没有 配置后…

【C】分支与循环2--while/for/do-while/goto以及break和continue在不同循环中的辨析~

分支与循环 while循环 if与while的对比 if(表达式)语句&#xff1b;while(表达式)语句&#xff1b;下面来看一个例子&#xff1a; 用 if 写&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {if (1)printf("hehe");//if后面条…

YOLOv8模型改进 第七讲 一种新颖的注意力机制 Outlook Attention

随着目标检测技术的不断发展&#xff0c;YOLOv8 作为最新一代的目标检测模型&#xff0c;已经在多个基准数据集上展现了其卓越的性能。然而&#xff0c;在复杂场景中&#xff0c;如何进一步提升模型的检测精度和鲁棒性依然是一个重要挑战。本文将探讨将 Outlook Attention 机制…

2024第四届”认证杯“数学中国全国大学生数学竞赛参赛通知

2024第四届“认证杯”数学中国 全国大学生数学竞赛报名通知 为了培养人才、服务教学、促进高等学校数学课程的改革和建设&#xff0c;增加大学生学习数学的兴趣&#xff0c;培养分析、解决问题的能力&#xff0c;发现和选拔数学创新人才&#xff0c;为青年学子提供一个展示数…

tortoisegit简单用法

一、基础设置 1.官网 https://tortoisegit.org/ TortoiseGit – Windows Shell Interface to Git 2.下载 3.安装 4.设置 5.克隆远程仓库 二、团队合作 1.在dev分支上创建分支 主分支&#xff1a;master 发开分支&#xff1a;dev 自己的分支&#xff1a;test_branch 2.修…

MySQL表的基本查询上

1&#xff0c;创建表 前面基础的文章已经讲了很多啦&#xff0c;直接上操作&#xff1a; 非常简单&#xff01;下一个&#xff01; 2&#xff0c;插入数据 1&#xff0c;全列插入 前面也说很多了&#xff0c;直接上操作&#xff1a; 以上插入和全列插入类似&#xff0c;全列…

小红书新ID保持项目StoryMaker,面部特征、服装、发型和身体特征都能保持一致!(已开源)

继之前和大家介绍的小红书在ID保持以及风格转换方面相关的优秀工作&#xff0c;感兴趣的小伙伴可以点击以下链接阅读~ 近期&#xff0c;小红书又新开源了一款文生图身份保持项目&#xff1a;StoryMaker&#xff0c;是一种个性化解决方案&#xff0c;它不仅保留了面部的一致性&…

智能交通与车联网:未来出行的创新变革

随着全球城市化进程的加速和交通需求的不断增加&#xff0c;传统的交通管理方式已经无法满足日益复杂的交通问题。智能交通&#xff08;Intelligent Transportation System, ITS&#xff09;和车联网&#xff08;Internet of Vehicles, IoV&#xff09;作为现代科技与交通行业深…

云手机:社交平台运营的热门工具

随着互联网的飞速发展&#xff0c;社交平台已经成为企业推广和营销的核心渠道。传统的运营方式已经无法满足高效运营的需求&#xff0c;而云手机作为新兴工具&#xff0c;逐渐成为社交平台运营的前沿趋势。本文将深入分析云手机如何优化社交平台的运营流程&#xff0c;助力企业…

outlook 添加企业邮箱账号出现 553 authentication is required 错误解决

系统报错如下 问题原因 发件服务器身份验证设置错误&#xff0c;或者未勾选发送服务器验证的选项。 解决方案 Outlook客户端 本文以Outlook 2016为例&#xff0c;具体操如下&#xff1a; 1、在Outlook客户端的电子邮件设置窗口中&#xff0c;单击其他设置&#xff1b; 2、…

【ICPC】The 2021 ICPC Asia Shanghai Regional Programming Contest H

Life is a Game #最小生成树 #重构树 #图论 #贪心 题目描述 A good problem should have a concise statement. You are given an array a a a of length n n n, initially filled with zeros, and another array b b b of length n n n. Your goal is to transform arr…