【2000*】【Codeforces Round #518 (Div. 1) [Thanks, Mail.Ru!] B】Multihedgehog
【链接】  我是链接,点我呀:) 
 【题意】
【题解】
找到度数为1的点。
他们显然是叶子节点。
然后每个叶子节点。
往上进行bfs.
累计他们的父亲节点的儿子的个数。
如果都满足要求那么就继续往上走。
直到不能走。或已经走了k步。
且要求走了k步之后。他们都到了同一个节点。(根节点
这道题。
n=1的时候,认为是无解的。
(因为题目中说"some vertices of degree 1",也就是说必须>= 1.......
【代码】
/*
	find each vertex i where du[i]==1
		bfs(i) one depth and get y,cnt[y]++;
	after that
		count the number if different cnt[y] ->CNT (only consider cnt[y]>0 
	if (CNT!=1) return 0;
	set the only cnt value as kk
	we can now know that the root has kk children
	find the root,(du[root]==kk)
	(if there are more than one i such that du[i]==kk,no solution
	(if there are no such i,such that du[i]==k,no solution
	dfs from root.
	if (dep!=k && du[x]==1) return 0;//must have k depth
	check if every vertex except the bottom vertext all has kk children
*/
#include <bits/stdc++.h>
#define ll long long
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
using namespace std;
const int N = 1e5;
int n,k;
vector<int> g[N+10];
bool flag[N+10];
vector<int> v,tempv;
int cnt[N+10];
void wujie(){
 	puts("No");
 	exit(0);
}
int main(){
	#ifdef ccy
			freopen("rush.txt","r",stdin);
	#endif
	scanf("%d%d",&n,&k);
	if (n==1){
	 	puts("No");
	 	return 0;
	}
	rep1(i,1,n-1){
	 	int x,y;
	 	scanf("%d%d",&x,&y);
	 	g[x].push_back(y);
		g[y].push_back(x);
	}
	rep1(i,1,n)
	 	if ((int)g[i].size()==1){
	 	 	v.push_back(i);
	 	 }
	rep1(dep,1,k){
	/*
		for (int x:v){
		 	printf("%d ",x);
		}
		puts("");*/
		rep1(j,0,(int)v.size()-1){
			int x = v[j];
			int cntup = 0;
			rep1(l,0,(int)g[x].size()-1){
			 	int y = g[x][l];
//			 	printf("%d ",y);
			 	if (flag[y]) continue;
			 	cnt[y]++;
			 	cntup++;
            }
            if (cntup!=1) wujie();
            flag[x] = true;
		}
//		puts("");
		v.clear();
		rep1(i,1,n){
		 	if (cnt[i]!=0 && cnt[i]<3) wujie();
		 	if (cnt[i]==0) continue;
			v.push_back(i);
			cnt[i] = 0;
		}
	}
	rep1(i,0,(int)v.size()-1){
	 	if (v[i]!=v[0]) wujie();
	}
	puts("Yes");
 	return 0;
}
【2000*】【Codeforces Round #518 (Div. 1) [Thanks, Mail.Ru!] B】Multihedgehog的更多相关文章
- Codeforces Round #518 (Div. 2) [Thanks, Mail.Ru!]
		Codeforces Round #518 (Div. 2) [Thanks, Mail.Ru!] https://codeforces.com/contest/1068 A #include< ... 
- 【Codeforces Round #518 (Div. 2)】
		A:https://www.cnblogs.com/myx12345/p/9847588.html B:https://www.cnblogs.com/myx12345/p/9847590.html ... 
- 【Codeforces Round #435 (Div. 2) A B C D】
		CF比赛题目地址:http://codeforces.com/contest/862 A. Mahmoud and Ehab and the MEX ·英文题,述大意: 输入n,x(n,x& ... 
- 【map离散&容斥】Ghosts @Codeforces Round #478 (Div. 2) D
		传送门 题意:给你一条直线的斜率a和截距b,和某一时刻n个在直线上的点的横坐标,以及沿坐标轴方向的速度.问你这些点在(-∞,+∞)的时间内的碰撞次数. solution 设两个点在t时刻相碰,有: x ... 
- Codeforces Round #518 (Div. 2) B. LCM gcd+唯一分解定律
		题意:给出b 求lcm(a,b)/a 在b从1-1e18有多少个不同得结果 思路lcm*gcd=a*b 转换成 b/gcd(a,b) 也就是看gcd(a,b)有多少个值 可以把b 由唯一分解 ... 
- Codeforces Round #518 (Div. 2) B LCM
		传送门 https://www.cnblogs.com/violet-acmer/p/10163375.html 题解: 这道题有点意思,有点数学的味道. 根据定义“[a,b] / a”可得这求得是l ... 
- Codeforces Round #518 Div. 1没翻车记
		A:设f[i][j][0/1]为前i个数第i位为j且第i位未满足/已满足限制的方案数.大力dp前缀和优化即可. #include<iostream> #include<cstdio& ... 
- Codeforces Round #518 (Div. 2) D(计数DP)
		#include<bits/stdc++.h>using namespace std;const long long mod=998244353;int n;int a[100007];l ... 
- Codeforces Round #518 (Div. 1) Computer Game 倍增+矩阵快速幂
		接近于死亡的选手没有水平更博客,所以现在每五个月更一篇. 这道题呢,首先如果已经有权限升级了,那么后面肯定全部选的是 \(p_ib_i\) 最高的. 设这个值为 \(M=\max \limits_i ... 
随机推荐
- 二分查找(c & c++)
			typedef int ElemType; C版本号 [递归版本号] int binSearch2(ElemType List[] ,int x,int head,int tail){ //递归版本号 ... 
- 为Chrome开发插件提高工作效率
			工作生活,什么最珍贵,我觉得是时间,怎么节约时间是一个最重要的问题,如果你有重复的工作在网页上,请接着看 上手步骤: 打开https://developer.chrome.com/extensions ... 
- SQL 导出表数据存储过程
			SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- ... 
- sql小计合计
			转自:http://www.jb51.net/article/18860.htm 这里介绍sql server2005里面的一个使用实例: CREATE TABLE tb(province nvarc ... 
- fopen文件目录问题
			程序当前目录下.如果是在 VC 里面运行的, 这个目录是工程的目录. 如果是双击 exe 运行的, 这个目录就是 exe 所在的目录. 
- 浅谈自学Python之路(购物车程序练习)
			购物车程序练习 今天我们来做一个购物车的程序联系,首先要理清思路 购物车程序需要用到什么知识点 需要用到哪些循环 程序编写过程中考虑值的类型,是int型还是字符串 如果值为字符串该怎么转成int型 用 ... 
- Java.Cas4.0客户端接入配置
			1.本示例中使用cas4.0+cas-client-core3.4版本,ide则是myeclipse2014 blue版本,mvn使用3.9版本 2.注意事项:请先实现破解cas-client-cor ... 
- 06-联系人管理(xib应用)
			ViewController.h文件中: @interface ViewController : UIViewController - (IBAction)add:(UIBarButtonItem * ... 
- Android 权限管理(持续整理)
			1. Android 6.0之后,APP可以直接安装,运行时再询问用户授予相关权限,此时系统弹出一个对话框,(这个对话框不能由开发者定制) 同时用户也可以在手机的“设置”中对于某个App进行权限管理 ... 
- 附加MySQL数据库的方法
			下面讲解附加MySQL数据库的方法. (1)将“光盘\Code\04\Project\数据库”文件夹中的扩展名为.sql的文件拷贝到本地机器中. (2)在如图1所示的MySQL工作台界面中,单击Dat ... 
