题目链接: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. Oracle trunc函数使用

    select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss') f ...

  2. Murano Weekly Meeting 2015.08.11

    Meeting time: 2015.August.11th 1:00~2:00 Chairperson:  Serg Melikyan, PTL from Mirantis Meeting summ ...

  3. 打开/关闭网卡无线WIFI模块

    @echo off title ------(Please run as Administrators)Please select------ :begin echo ---------------- ...

  4. java实现连接mysql数据库单元测试查询数据项目分享

    1.按照javaweb项目的要求逐步建立搭建起机构,具体的类包有:model .db.dao.test;具体的架构详见下图: 2.根据搭建的项目架构新建数据库test和数据库表t_userinfo并且 ...

  5. phpstorm 配置 webserver ,配置根目录

    原文链接    http://blog.csdn.net/pony_maggie/article/details/52367093 phpstorm自带了一个web server,我们可以直接在IDE ...

  6. Jquery 客户端验证

    Jquery 客户端验证 //引入js文件 validate.js <html> <head> <title>jqueryValidateDemo</titl ...

  7. autofac 一个接口多个实现的顺序执行

    接口: namespace AutofacTest.Interface { public interface IUserInfo { string GetUserINfo(int uid); int ...

  8. .Net Core 应用框架。

    1.分布式系统框架  https://github.com/MassTransit/MassTransit 2.搜索引擎  https://github.com/XiLife-OSPC/Masuit. ...

  9. C#开发短信的方法和简介(转)

    http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=6337(来自) 自己收藏哈子

  10. Java方法命名之“由简入繁”原则

    1.访问控制层(Controller 层)中的方法命名方向是简洁明了,向着自然化语言方向靠拢,比如“更新用户”,建议命名为“updateUser”,而非“updateUserById”,实际上我们更新 ...