题意简述:判断所给图是不是一个k递归图

这是一个2递归图

题解:仔细观察发现中心点一定是直径的中点,因此找到直径中点之后进行bfs判断即可,这里注意判断递归层次太大也不符合

const int maxn=1e5+5;
const int maxm=2e5+5;
const int inf=1e9;
int head[maxn],ver[maxm],nex[maxm],tot;
void inline AddEdge(int x,int y){
ver[++tot]=y,nex[tot]=head[x],head[x]=tot;
}
int n,k;
int d[maxn],dep[maxn],pre[maxn];
bool vis[maxn];
int main(){
cin>>n>>k;
for(int i=0;i<n-1;i++){
int x,y;
scanf("%d%d",&x,&y);
AddEdge(x,y);
AddEdge(y,x);
d[x]++;
d[y]++;
}
int lf=0;
for(int i=1;i<=n;i++)
if(d[i]==1) {
lf=i;break;
}
if(!lf) {
puts("No");return 0;
}
queue<int> q;
q.push(lf);
int rf=0;
while(q.size()){
int x=q.front();q.pop();
vis[x]=1;
for(int i=head[x];i;i=nex[i]){
int y=ver[i];
if(!vis[y]) {
dep[y]=dep[x]+1;
pre[y]=x;
q.push(y);
}
}
}
for(int i=1;i<=n;i++){
if(dep[i]==2*k) {
rf=i;break;
}
}
if(!rf) {
puts("No");return 0;
}
int rt;
for(int i=0;i<k;i++){
rf=pre[rf];
}
rt=rf;
memset(vis,0,sizeof(vis));
memset(dep,0,sizeof(dep));
q.push(rt);
while(q.size()){
int x=q.front();q.pop();
int sum=0;
vis[x]=1;
for(int i=head[x];i;i=nex[i]){
int y=ver[i];
if(!vis[y]){
dep[y]=dep[x]+1;
pre[y]=x;
q.push(y);
sum++;
}
}
if(dep[x]<k && sum<3) {
puts("No");return 0;
}
if(dep[x]>k) {//巨坑
puts("No");
return 0;
}
}
puts("Yes");
}

  

cf1067b的更多相关文章

  1. 模拟求root——cf1067B

    注意最后一轮要单独求一下 且最后只能有一个root #include <bits/stdc++.h> using namespace std; #define MOD 1000000007 ...

随机推荐

  1. Python中zip()函数的解释和可视化

    zip()的作用 先看一下语法: zip(iter1 [,iter2 [...]]) -> zip object Python的内置help()模块提供了一个简短但又有些令人困惑的解释: 返回一 ...

  2. 【原创】(二)Linux进程调度器-CPU负载

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  3. C++ 日期 & 时间(转)

    C++ 标准库没有提供所谓的日期类型.C++ 继承了 C 语言用于日期和时间操作的结构和函数. 为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 头文件.有四个与时间相关的类型:cloc ...

  4. ansible实现SSH配置免密互信

    Ansible是用来处理大批量重复性操作的工具,只需要在一台机器上就可以远程控制所有机器,但前提是必须保证每台机器之间SSH可以相互免密登录.关于Ansible的安装和环境准备请参考Ansible环境 ...

  5. GPU 版 TensorFlow failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED

    原因: 使用 GPU 版 TensorFlow ,并且在显卡高占用率的情况下(比如玩游戏)训练模型,要注意在初始化 Session 的时候为其分配固定数量的显存,否则可能会在开始训练的时候直接报错退出 ...

  6. Jenkins新建节点找不到通过Java web启动代理?

    参考博客:Jenkins新建节点,启动方式没有“通过Java Web启动代理”选项怎么办? 在Jenkins中,打开“系统管理”→“管理节点”→“新建节点”页面时,“启动方式”选项没有“通过Java ...

  7. 【Java并发工具类】原子类

    前言 为保证计数器中count=+1的原子性,我们在前面使用的都是synchronized互斥锁方案,加锁独占访问的方式未免太过霸道,于是我们来介绍另一种解决原子性问题的无锁方案:原子变量.在正式介绍 ...

  8. 移动端 location.href 无法成功跳转页面

    最近做的移动端页面在请求成功后要跳转页面,通过location.href实现的跳转.但同事在测试时,安卓机可以成功跳转,苹果IOS确无法成功跳转.   解决办法:在链接后面加一个随机参数,这样就可以跳 ...

  9. centos7下查看mysql配置文件适用顺序

    mysql --help|grep 'my.cnf' [root@izm5e2q95pbpe1hh0kkwoiz ~]# mysql --help|grep 'my.cnf' order of pre ...

  10. fish 设置环境变量;fish shell 相关使用说明记录;

    最近使用 fish进行工作,发现环境变量忘记如何设置: fish 环境变量保存在两个地方: ~ 目录下,.config/fish 目录下: /etc/fish/ 目录下 如果配置所有用户都能用的环境变 ...