题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1903

题意:

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 网络的更多相关文章

  1. Uva 网络(Network,Seoul 2007,LA 3902)

    #include<iostream> #include<cstring> #include<vector> using namespace std; +; int ...

  2. LA 3902 Network

    人生第一道图论题啊,有木有 题意: 有一个树状网络,有一个原始服务器s,它的服务范围是k 问至少再放多少台服务范围是k的服务器才能使网络中的每个节点都被覆盖掉 解法: 我们以原始服务器为根将其转化成一 ...

  3. LA 3902 Network(树上最优化 贪心)

    Network Consider a tree network with n <tex2html_verbatim_mark>nodes where the internal nodes ...

  4. 2007LA 3902 网络(树+贪心)

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=283&am ...

  5. UVALive 3902 网络

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. Uva LA 3902 - Network 树形DP 难度: 0

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  7. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

  8. LA 4731 蜂窝网络

    题目链接:https://vjudge.net/problem/UVALive-4731 题意: n 个 数,分成 w 组,求整个区间的数学期望的最小值: 一个区间的数学期望公式给出:一个区间的和 * ...

  9. Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7497260 更多请看专栏,地址 ...

随机推荐

  1. sp_executesq用法

    第一种用法: --@sqlstring :就是你要执行的sql语句字符串--@ParmDefinition: @sqlstring里边用到的参数在这里声明 输出的参数要加output --sp_exe ...

  2. Oozie的缺点

    Oozie使用的时候有以下不便: [a]Oozie调度的Workflow只能使用XML文件配置 [b]启动调度只能通过命令行 [c]无法通过Oozie界面调试调度脚本 [d]Oozie无法可视化调试脚 ...

  3. spring aop实现log 日志跟踪

    之前写的那篇是基于springboot的(https://www.cnblogs.com/yaoyuan2/p/10302802.html),由于遗留项目用的是spring,因此需要在spring基础 ...

  4. Flex布局教程

    一.Flex布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为 Flex 布局. .box{ ...

  5. vue中methods函数调用methods函数写法

    export default { data() { return { hello:"你好" } }, methods:{ open(that) { that.hello = &qu ...

  6. 转——jdbcType与javaType的对应关系

    ------------------------------------------------ 原文:https://blog.csdn.net/haofeng82/article/details/ ...

  7. http 协议的简单学习 虽然有点老但是 还不错

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  8. DexClassLoader和PathClassLoader

    Android的ClassLoader体系 在Android中可以跟java一样实现动态加载jar,但是Android使用Dalvik VM,不能直接加载java打包jar的byte code,需要通 ...

  9. 如何成为一名:黑客/Programmer/Python高手

    如何成为一名黑客 Eric Steven Raymond https://translations.readthedocs.org/en/latest/hacker_howto.html How To ...

  10. Redis Intro - Dict

    https://segmentfault.com/a/1190000004850844