上一篇博客题目的普遍情况

这里跟前面那道题有点不同的地方是它的半径变得任意可变,并且给了一个初始的节点已经覆盖,并且最终的目的是让所有的叶子都覆盖。

做法跟上道题是类似的。

无根树还是变成有根树好,既然直接给了我们一个特殊点,那就直接拿它做根。

首先先dfs一下,判断哪些点是叶子,顺便统计出dep数组。

既然根已经添加,直接先半径为\(k\)地覆盖一下。把一些初始化就覆盖好的叶子忽略掉。

然后就是一样的弄一个堆,按照深度大小来排序,深度大的叶子先出队。

这个叶子直接取它的\(k\)级父亲,然后就拿它来覆盖就可以了。直到所有叶子都覆盖完。

代码:

#include<cstdio>
#include<cstring>
#include<queue>
const int maxn = 1005;
struct Edges
{int next, to;
} e[maxn << 1];
int head[maxn], tot;
int dep[maxn], fa[maxn];
bool vis[maxn];
bool leaf[maxn];
int n, s, k;struct cmp
{bool operator () (const int &a, const int &b) const{return dep[a] < dep[b];}
};
void link(int u, int v)
{e[++tot] = (Edges){head[u], v};head[u] = tot;
}
void dfs(int u, int f)
{dep[u] = dep[f] + 1; fa[u] = f;int cnt = 0;for(int i = head[u]; i; i = e[i].next){cnt++;int v = e[i].to;if(v == f) continue;dfs(v, u);}if(cnt == 1) leaf[u] = true;
}
void dfs2(int u, int f, int d)
{vis[u] = true;if(d == k) return;for(int i = head[u]; i; i = e[i].next){int v = e[i].to;if(v == f) continue;dfs2(v, u, d + 1);}
}
int main()
{int T; scanf("%d", &T);while(T--){memset(head, 0, sizeof head); tot = 0;scanf("%d%d%d", &n, &s, &k);for(int i = 1; i < n; i++){int u, v; scanf("%d%d", &u, &v);link(u, v); link(v, u);}memset(dep, 0, sizeof dep);memset(fa, 0, sizeof fa);dfs(s, 0);memset(vis, false, sizeof vis);dfs2(s, 0, 0);std::priority_queue<int, std::vector<int>, cmp> heap;for(int i = 1; i <= n; i++){if(leaf[i] && !vis[i]) heap.push(i);}int ans = 0;while(!heap.empty()){int x;while(!heap.empty() && vis[x = heap.top()]) heap.pop();if(heap.empty()) break;int v = x;for(int i = 1; i <= k; i++) v = fa[v];dfs2(v, 0, 0);ans++;}printf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/Garen-Wang/p/9882816.html

UVALive - 3902 Network相关推荐

  1. UVALive Problem 7456 Least Crucial Node——Regionals 2015 :: Asia - Taipei

    此文章可以使用目录功能哟↑(点击上方[+])  UVALive Problem 7456 Least Crucial Node Accept: 0    Submit: 0 Time Limit: 3 ...

  2. Distilling the Knowledge in a Neural Network 论文笔记蒸馏

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bryant_meng/article/ ...

  3. CentOS7 service network start命令启动时报错解决方法

    service network start命令启动时报错: [root@localhost network-scripts]# service network start Starting netwo ...

  4. DP UVALive 6506 Padovan Sequence

    题目传送门 /*题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[ ...

  5. 面向Mobile device的CNN模型手工设计与NAS分析总结,MobileNet V1,V2,V3,Efficient,MNasNet以及Efficient network design

    手工方法和NAS的高效网络模型设计总结与分析 这篇文章主要关注对于移动端,资源受限平台的高效神经网络设计(Manually)和搜索(NAS). ​​​​​​高效的CNN设计不只是用在服务器,云端,资源 ...

  6. 基于caffe的度量学习实现(Siamese network Triplet network)

    基于caffe的度量学习实现,主要是孪生网络和三元组网络(Siamese network & Triplet network)实现图像的分类和度量. 包含数据集制作脚本,训练测试脚本和pyth ...

  7. Corner Proposal Network 论文阅读(2020ECCV)

    Introduction 引言 介绍了anchor base 和 anchor free 与one stage 和 two stage ,然后说通常认为的anchor base 有低召回的问题,anc ...

  8. 创建第一个 local network(I) - 每天5分钟玩转 OpenStack(80)

    在 ML2 配置文件中 enable local network 后,本节将开始创建第一个 local network. 我们将通过 Web GUI 创建第一个 local network. 首先确保 ...

  9. 【Qt】Qt中使用ssl时报错:qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method

    一.问题 在Qt中使用https,运行时报错: qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method 二.原因分析 SSLv2由 ...

最新文章

  1. GitHub现在已支持函数定义跳转,妈妈再也不怕我记性差了
  2. [maven][spring boot] mvn -f 指定pom文件
  3. 什么叫返回路径平面上的间隙_差分信号回流路径的全波电磁场解析
  4. 2018年计算机专业考研,2018年计算机专业考研大纲解析
  5. 1047:判断能否被3,5,7整除
  6. Python——有关transpose的多维转置的难点
  7. 解决关闭hbase时stop-hbase.sh报错stopping hbasecat: /tmp/hbase-xxxx-master.pid: No such file or directory
  8. 【接口自动化测试】使用Fitness实现接口自动化测试
  9. 【信号与系统】三大变换公式表 | 傅里叶变换 | 拉普拉斯变换 | Z变换
  10. 安装Linux无盘工作站
  11. gcode 解析入门1-1
  12. canvas设计抽奖刮刮卡(非酋慎点) - Kaiqisan
  13. 微信小程序图片懒加载(自定义组件)
  14. 海康威视曲面大屏出现花屏,闪烁等现象该如何解决?
  15. hazelcast配置内存_在内存数据网格中引入hazelcast imdg
  16. 自己交社保的手机APP
  17. Fedora Firefox flash-player插件安装
  18. 如何在输入特殊符号,例如角度“∠”
  19. 全国计算机一级office试题及答案,2017全国计算机一级MSOffice考试试题及答案
  20. elasticseach---脑裂

热门文章

  1. 函数式编程语言时代已经来临
  2. [考试]20151013搜索
  3. 鸟哥的Linux私房菜基础学习篇(第二版)第十二章课后习题与答案
  4. java 静态初始化 调用_java JVM-类加载静态初始化块调用顺序
  5. java 规则引擎_GitHub - javaso/rulegin: 分布式规则引擎系统,重构于开源IOT项目thingboard...
  6. 5添加一块盘_win系统,Linux系统,重装系统后,添加盘简易教程
  7. 子域名/目录暴力工具Gobuster
  8. iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图
  9. vrrp广播风暴_企业园区网MSTP+VRRP组合
  10. centos ipvsadm 规则保存_从VAR精神到判罚规则:终场哨声后的VAR点球,到底是否合理?...