注意最后一轮要单独求一下

且最后只能有一个root

#include <bits/stdc++.h>
using namespace std; #define MOD 1000000007
#define ll long long int
#define vi vector<int>
#define vii vector< vector<int> >
#define PI 3.1415926535897932384626433832795
#define INF 9223372036854775807LL
#define endl "\n" int deg[]; int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n,k;
cin >> n >> k;
vii graph(n+,vi());
vector<bool> rem(n+,false);
for(int i = ; i < n-; i++) {
int a,b;
cin >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
if(k > ) {
cout << "No";
return ;
}
while(k > ) {
for(int i = ; i <= n; i++) {//扫一遍剩下的图,求度数
if(!rem[i]) {
for(int u : graph[i]) {
if(!rem[u]) {
deg[i]++;
}
}
}
}
for(int i = ; i <= n; i++) {//扫一遍剩余结点
if(!rem[i]) {
int leafcn = ;
for(int u : graph[i]) {
if(!rem[u] && deg[u] == ) {//找到了新的叶子
leafcn++;
}
}
if(leafcn < && leafcn != ) {//u有儿子且小于3
cout << "No";
return ;
}
}
}
for(int i = ; i <= n; i++) {//把叶子删了
if(!rem[i] && deg[i] == ) {
rem[i] = true;
}
}
memset(deg,,sizeof(deg));
k--;
} int cn = ;
int cnb = ;
for(int i = ; i <= n; i++) {//最后还要再求一次
if(!rem[i]) {
cn++;
for(int u : graph[i]) {
if(!rem[u]) {
deg[i]++;
}
}
if(deg[i] != ) {
cnb++;
}
}
}
if(cn < || cnb != ) {
cout << "No";
} else {
cout << "Yes";
}
return ;
}

模拟求root——cf1067B的更多相关文章

  1. 九度OJ 1085 求root(N, k) -- 二分求幂及快速幂取模

    题目地址:http://ac.jobdu.com/problem.php?pid=1085 题目描述: N<k时,root(N,k) = N,否则,root(N,k) = root(N',k). ...

  2. C++版 - Leetcode 69. Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】

    69. Sqrt(x) Total Accepted: 93296 Total Submissions: 368340 Difficulty: Medium 提交网址: https://leetcod ...

  3. 九度oj 题目1085:求root(N, k) 清华2010年机试题目

    题目描述: N<k时,root(N,k) = N,否则,root(N,k) = root(N',k).N'为N的k进制表示的各位数字之和.输入x,y,k,输出root(x^y,k)的值 (这里^ ...

  4. 牛客网机试题-求root(N,k)

    题目描述     N<k时,root(N,k) = N,否则,root(N,k) = root(N',k).N'为N的k进制表示的各位数字之和.输入x,y,k,输出root(x^y,k)的值 ( ...

  5. 牛客国庆集训派对Day1:J:Princess Principal(栈模拟求括号匹配)

    题目描述 阿尔比恩王国(the Albion Kingdom)潜伏着一群代号“白鸽队(Team White Pigeon)”的间谍.在没有任务的时候,她们会进行各种各样的训练,比如快速判断一个文档有没 ...

  6. 九度OJ 1085:求root(N, k) (迭代)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1407 解决:523 题目描述: N<k时,root(N,k) = N,否则,root(N,k) = root(N',k).N'为N的 ...

  7. leetcode第6题:Z字形变换--直接模拟求解法

    [题目描述] 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: 之后,你 ...

  8. [模拟赛FJOI Easy Round #2][T1 sign] (模拟+求字符串重复字串)

    [题目描述] 小Z在无意中发现了一个神奇的OJ,这个OJ有一个神奇的功能:每日签到,并且会通过某种玄学的算法计算出今日的运势.在多次试验之后,小Z发现自己的运势按照一定的周期循环,现在他找到了你,请通 ...

  9. 二分求幂/快速幂取模运算——root(N,k)

    二分求幂 int getMi(int a,int b) { ; ) { //当二进制位k位为1时,需要累乘a的2^k次方,然后用ans保存 == ) { ans *= a; } a *= a; b / ...

随机推荐

  1. 用CSS3制作50个超棒动画效果教程

    这50个CSS动画集合可以让你通过使用JavaScript函数来让动画更生动.为了能够预览到这些惊人的CSS3技术带来的动画特效,请大家使用如Safari和Chrome这类基于WebKit内核的浏览器 ...

  2. workman

    workman安装: 环境安装: 检测依赖环境是否安装 rpm -qa | grep “软件或者包的名字”或者 yum list installed eg: rpm -qa | grep libeve ...

  3. 从零开始搭建系统2.1——Nexus安装及配置

    在安装配置Nexus时,请先确定您已经配置好jdk 1.创建目录 2.下载安装包 [root@localhost usr]# cd nexus 下载地址:https://www.sonatype.co ...

  4. 【线段树】[Luogu P4198]楼房修建

    显然要维护斜率区间单调递增 并且第一个必选,后一个比前一个选中的斜率大的必选 考虑如何合并两个区间 我们维护一个least值,least这个值必选,且之后选的都必须严格大于least,Push_Up的 ...

  5. zepto-touch事件

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. cmd操作SQLService数据库

    1.win+R 输入cmd2.输入sqlcmd -s 服务器名称3. 1> 输入 use 数据库名称4. 2> go5. 1> select *from 表名6. 2> go

  7. 起手一个mpvue项目准备

    1,环境配置(http://mpvue.com/mpvue/quickstart.html) //全局安装vue-cli3脚手架 npm install -g @vue/cli @vue/cli-in ...

  8. js循环给li绑定事件实现和弹出对应的索引

    原文:http://www.cnblogs.com/wuchuanlong/p/5945286.html 方法一,动态添加click事件,并添加属性 var itemli = document.get ...

  9. 线程池 一 ForkJoinPool

    java.util.concurrent public class ForkJoinPool extends AbstractExecutorService public abstract class ...

  10. [原创] delphi Memo 滚动到底部/开始 [Delphi XE、Delphi 7]

    以前控制Memo滚动到底部的操作: SendMessage(memo1.Handle,WM_VSCROLL,SB_BOTTOM,0); 或者 Memo1.SelLength:=Length(Memo1 ...