noip2019集训测试赛(六)B.匹配

Description

Rikka有一张无向联通图 G=⟨V,E⟩ ,其中顶点数 |V|=n ,边数 |E|=n−1 。Rikka可以选择 E 中的一些边删掉。显然这有 2n−1 种方案。

Rikka想知道,有多少种方案使得删边后残余图中的最大匹配数恰好为 m 的倍数。由于答案可能很大,请输出答案对 998244353 取模的余数。

边集 S 是图 G=⟨V,E⟩ 的匹配当且仅当 S 中任意两条边都不相邻(无公共顶点)。图 G 的最大匹配是指边数 |S| 最多的匹配。图 G 的最大匹配数为图 G 的最大匹配的边数 |S| 。


Input

第一行包含两个正整数 n,m ( 1 ≤ n ≤ 5 × 1 0 4 , 1 ≤ m ≤ 200 1≤n≤5×10^4,1≤m≤200 1n5×1041m200 )

接下来 n−1 行,每行包含两个整数 u,v ,表示 G 的边集。


Output

输出一个整数,表示答案对 998244353 取模的余数。


Solution

树形DP

下面转自https://www.cnblogs.com/FxxL/p/7351404.html。

f [ i ] [ j ] f[i][j] f[i][j]表示,以i为根的子树的所有子图(包含子树所有节点,删掉一些边得到的子图)中,符合下列条件的子图的个数:

  1. 记子图最大匹配为 h 1 h_1 h1,子图去掉与i节点相连的边后的最大匹配为 h 2 h_2 h2,满足 h 1 − h 2 = 0 h_1-h_2=0 h
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值