CF1067B.Multihedgehog
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Someone give a strange birthday present to Ivan. It is hedgehog — connected undirected graph in which one vertex has degree at least 3 (we will call it center) and all other vertices has degree 1. Ivan thought that hedgehog is too boring and decided to make himself k-multihedgehog.
Let us define k-multihedgehog as follows:
- 1-multihedgehog is hedgehog: it has one vertex of degree at least 3 and some vertices of degree 1.
- For all k≥2, k-multihedgehog is (k−1)-multihedgehog in which the following changes has been made for each vertex v with degree 1: let u be its only neighbor; remove vertex v, create a new hedgehog with center at vertex w and connect vertices u and w with an edge. New hedgehogs can differ from each other and the initial gift.
Thereby k-multihedgehog is a tree. Ivan made k-multihedgehog but he is not sure that he did not make any mistakes. That is why he asked you to check if his tree is indeed k-multihedgehog.
有人送给了伊万一个奇怪的生日礼物:一只“刺猬图”——一种连通的无向图,其中恰好有一个顶点的度数至少为 3(我们称其为中心),其余所有顶点的度数均为 1。伊万觉得刺猬图太无聊了,于是决定为自己构造一只 k-重刺猬图(k-multihedgehog)。
我们递归地定义 k-重刺猬图如下:
- 1-重刺猬图即为刺猬图:它包含一个度数至少为 3 的顶点,以及若干个度数为 1 的顶点;
- 对任意 k≥2,k-重刺猬图是由 (k−1)-重刺猬图经过如下变换得到的:对每个度数为 1 的顶点 v,设其唯一邻接顶点为 u;移除顶点 v,新建一只刺猬图,将其中心设为新顶点 w,并添加一条连接 u 与 w 的边。这些新加入的刺猬图彼此之间可以不同,也可以与初始礼物不同。
因此,k-重刺猬图是一棵树。伊万已构造出一棵 k-重刺猬图,但他不确定自己是否犯了错误。因此,他请你帮忙验证:他所构造的这棵树是否确实是一只 k-重刺猬图。
输入格式
First line of input contains 2 integers n, k (1≤n≤105, 1≤k≤109) — number of vertices and hedgehog parameter.
Next n−1 lines contains two integers u v (1≤u,v≤n;u=v) — indices of vertices connected by edge.
It is guaranteed that given graph is a tree.
输入的第一行包含两个整数 n 和 k(1≤n≤105,1≤k≤109)——分别为顶点数和刺猬参数。
接下来的 n−1 行每行包含两个整数 u 和 v(1≤u,v≤n;u=v)——表示由一条边连接的两个顶点的编号。
保证给定的图是一棵树。
输出格式
Print "Yes" (without quotes), if given graph is k-multihedgehog, and "No" (without quotes) otherwise.
如果给定的图是 k-多重刺猬图,则输出 "Yes"(不带引号);否则输出 "No"(不带引号)。
输入输出样例
输入#1
14 2 1 4 2 4 3 4 4 13 10 5 11 5 12 5 14 5 5 13 6 7 8 6 13 6 9 6
输出#1
Yes
输入#2
3 1 1 3 2 3
输出#2
No
说明/提示
2-multihedgehog from the first example looks like this:

Its center is vertex 13. Hedgehogs created on last step are: [4 (center), 1, 2, 3], [6 (center), 7, 8, 9], [5 (center), 10, 11, 12, 13].
Tree from second example is not a hedgehog because degree of center should be at least 3.
第一个样例中的 2-多重刺猬图如下所示:

其中心顶点为 13。最后一步构造出的刺猬图分别为:
4\text{(中心)},\ 1,\ 2,\ 3$$, $$6\text{(中心)},\ 7,\ 8,\ 9$$, $$5\text{(中心)},\ 10,\ 11,\ 12,\ 13$$。 第二个样例中的树不是刺猬图,因为其中心顶点的度数至少应为 $3$。输入解题思路,AI测评打分。不知道怎么写?