LA 3902 网络
题意:
n 台计算机,n-1条边成树,有一个服务器,给定一个 k ,要求所有叶子结点,距离服务器的距离 <=k; 所以要在一些地方放服务器;
问最少要放多少个服务器?

图中要在 4 号结点放一个服务器,k = 2;
分析:
1、无根树要转有根树

从下往上覆盖,设4,肯定要比设5要好,5能覆盖到的,4也能覆盖到,所以在用4来覆盖的时候,要从新建树 <( ̄︶ ̄)>
#include <bits/stdc++.h> using namespace std; const int maxn = + ; int n,s,k;
vector<int> gr[maxn],nodes[maxn]; int fa[maxn];
void dfs(int u,int f,int d)
{
fa[u] = f;
int nc = gr[u].size();
if(nc==&&d>k) nodes[d].push_back(u);
for(int i=; i<nc; i++)
{
int v = gr[u][i];
if(v!=f)
dfs(v,u,d+);
}
} bool covered[maxn]; void dfs2(int u,int f,int d)
{
covered[u] = true;
int nc = gr[u].size();
for(int i=; i<nc; i++)
{
int v = gr[u][i];
if(v!=f&&d<k)
dfs2(v,u,d+);
}
} int solve()
{
int ans = ;
memset(covered,,sizeof(covered));
for(int d=n-; d>k; d--)
{
for(int i=; i<nodes[d].size(); i++)
{
int u = nodes[d][i];
if(covered[u])
continue; int v = u;
for(int j=; j<k; j++)
v = fa[v];
dfs2(v,-,);
ans++;
}
}
return ans;
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&s,&k);
for(int i=; i<=n; i++)
{
gr[i].clear();
nodes[i].clear();
} for(int i=; i<n-; i++)
{
int a,b;
scanf("%d%d",&a,&b);
gr[a].push_back(b);
gr[b].push_back(a);
} dfs(s,-,);
printf("%d\n",solve());
} return ;
}
LA 3902 网络的更多相关文章
- Uva 网络(Network,Seoul 2007,LA 3902)
#include<iostream> #include<cstring> #include<vector> using namespace std; +; int ...
- LA 3902 Network
人生第一道图论题啊,有木有 题意: 有一个树状网络,有一个原始服务器s,它的服务范围是k 问至少再放多少台服务范围是k的服务器才能使网络中的每个节点都被覆盖掉 解法: 我们以原始服务器为根将其转化成一 ...
- LA 3902 Network(树上最优化 贪心)
Network Consider a tree network with n <tex2html_verbatim_mark>nodes where the internal nodes ...
- 2007LA 3902 网络(树+贪心)
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=283&am ...
- UVALive 3902 网络
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Uva LA 3902 - Network 树形DP 难度: 0
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- OI 刷题记录——每周更新
每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...
- LA 4731 蜂窝网络
题目链接:https://vjudge.net/problem/UVALive-4731 题意: n 个 数,分成 w 组,求整个区间的数学期望的最小值: 一个区间的数学期望公式给出:一个区间的和 * ...
- Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7497260 更多请看专栏,地址 ...
随机推荐
- sp_executesq用法
第一种用法: --@sqlstring :就是你要执行的sql语句字符串--@ParmDefinition: @sqlstring里边用到的参数在这里声明 输出的参数要加output --sp_exe ...
- Oozie的缺点
Oozie使用的时候有以下不便: [a]Oozie调度的Workflow只能使用XML文件配置 [b]启动调度只能通过命令行 [c]无法通过Oozie界面调试调度脚本 [d]Oozie无法可视化调试脚 ...
- spring aop实现log 日志跟踪
之前写的那篇是基于springboot的(https://www.cnblogs.com/yaoyuan2/p/10302802.html),由于遗留项目用的是spring,因此需要在spring基础 ...
- Flex布局教程
一.Flex布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为 Flex 布局. .box{ ...
- vue中methods函数调用methods函数写法
export default { data() { return { hello:"你好" } }, methods:{ open(that) { that.hello = &qu ...
- 转——jdbcType与javaType的对应关系
------------------------------------------------ 原文:https://blog.csdn.net/haofeng82/article/details/ ...
- http 协议的简单学习 虽然有点老但是 还不错
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...
- DexClassLoader和PathClassLoader
Android的ClassLoader体系 在Android中可以跟java一样实现动态加载jar,但是Android使用Dalvik VM,不能直接加载java打包jar的byte code,需要通 ...
- 如何成为一名:黑客/Programmer/Python高手
如何成为一名黑客 Eric Steven Raymond https://translations.readthedocs.org/en/latest/hacker_howto.html How To ...
- Redis Intro - Dict
https://segmentfault.com/a/1190000004850844