Network
时间:2019-10-03
本文章向大家介绍Network,主要包括Network使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目链接:Click here
Solution:
题目只要求覆盖叶子节点,那么我们先找到所有没被覆盖的叶子节点
我们把叶子节点按照到服务端的距离从大到小排序,然后贪心的找到它向上第k个祖先即可(因为先覆盖较小的显然不会覆盖到较大的,而先覆盖较大的却有可能覆盖较小的)
Solution:
#include<iostream>
#include<cstdio>
#include<ctype.h>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1e3+11;
int n,rt,k,cnt,tot,ans;
int head[N],fa[N],de[N],p[N],dep[N];
struct Edge{int nxt,to;}edge[N<<1];
inline bool cmp(int x,int y){return dep[x]>dep[y];}
void ins(int x,int y){
edge[++cnt].nxt=head[x];
edge[cnt].to=y;head[x]=cnt;
}
void dfs(int x,int fat){
for(int i=head[x];i;i=edge[i].nxt){
int y=edge[i].to;
if(y==fat) continue;
dep[y]=dep[x]+1;
fa[y]=x;dfs(y,x);
}
}
void change(int x,int fat){
if(dep[x]==k) return ;
for(int i=head[x];i;i=edge[i].nxt){
int y=edge[i].to;
if(y==fat) continue;
if(dep[y]>dep[x]+1)
dep[y]=dep[x]+1,change(y,x);
}
}
void solve(){
for(int i=1;i<=n;i++)
if(de[i]==1&&dep[i]>k) p[++tot]=i;
sort(p+1,p+n+1,cmp);
for(int i=1;i<=tot;i++)
if(dep[p[i]]>k){
int x=p[i],y=k;
while(y--) x=fa[x];
dep[x]=0;change(x,0);++ans;
}
printf("%d\n",ans);
}
int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
signed main(){
int t=read();
while(t--){ans=tot=cnt=0;
memset(head,0,sizeof(head));
memset(dep,0,sizeof(dep));
memset(de,0,sizeof(de));
memset(fa,0,sizeof(fa));
n=read(),rt=read(),k=read();
for(int i=1;i<n;i++){
int x=read(),y=read();
ins(x,y),ins(y,x);
de[x]++,de[y]++;
}dfs(rt,0);solve();
}return 0;
}
原文地址:https://www.cnblogs.com/NLDQY/p/11619869.html
- 注意了,使用XSS平台的你可能被“偷窥”
- 挖洞经验 | 命令注入突破长度限制
- 预防SQL注入攻击之我见
- 企业网站架构之Nginx详解原理以及工作模块;源码Lnmp架构
- 【自然框架】——页面基类与设计模式(二) 模板模式
- HLS Lesson17-数组优化:数组映射和重组
- HLS Lesson16-数组优化:数组分割
- HLS Lesson15-for循环优化:其他方法
- 对自己的上网搜索记录进行爬虫是怎样一种体验
- HLS Lesson13-for循环优化:合并
- HLS Lesson12-for循环优化:基本性能指标
- HLS Lesson11-c/c++ testbench书写续2
- 【机器学习】实例详解机器学习如何解决问题
- 企业网站架构之Nginx+tomcat+memcached集群
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 小视频源码,按返回键两次退出
- iOS音视频接入 - TRTC多人音视频通话
- Android平台RTMP推流或轻量级RTSP服务(同屏或摄像头)编码前数据接入类型总结
- 接口测试框架实战(二) | 搞定多环境下的接口测试
- MySQL 案例:“丢失数据”的谜题
- 接口测试框架实战(三) | APIObject 模式、原则与应用
- 接口测试框架实战(四) | 通用 API 封装实战
- 面试字节两轮后被完虐,一份字节跳动面试官给你的Android技术面试指南,请查收!
- 3分钟短文:说说Laravel模型中还算常用的2个“关系”
- iOS音视频接入 - TRTC实时屏幕分享
- 如何维护爬虫代理
- LoRaWAN 帧计数机制及典型问题分析
- ffmpeg mp4解码管道输出的问题
- 机器人运动控制仿真:Matlab机器人工具箱和Simmechanics
- 使用HTMLTestRunner实现HTML测试报告