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

http://7xjob4.com1.z0.glb.clouddn.com/c6a2a6f54f5a6c2cae2c82df2ec552f7

题意:给网络图,叶节点是客户端,其他是服务器,设置最少的服务数在服务器上使客户端到服务的距离不超过指定值

思路:将已有的那个服务作根,转换图至有根树,记录各叶子节点的深度;选深度最大的叶节点的 指定值距离 的父亲节点作为设置服务最划算,设置后dfs覆盖状态,只需处理深度大于指定值的叶子节点。

 #include <bits/stdc++.h>
using namespace std; const int maxn=;
vector <int> gr[maxn],nodes[maxn];
int n,s,k,fa[maxn];
bool covered[maxn]; void dfs(int u,int f,int d)
{
int i,j;
fa[u]=f;
int nc=gr[u].size();
if(nc== && d>k)
{
nodes[d].push_back(u);
}
for(i=;i<nc;i++)
{
int v=gr[u][i];
if(v!=f)
dfs(v,u,d+);
}
return ;
} void dfs2(int u,int f,int d)
{
int i,j;
covered[u]=true;
int nc=gr[u].size();
for(i=;i<nc;i++)
{
int v=gr[u][i];
if(v!=f && d<k)
dfs2(v,u,d+);
}
return ;
} int solve()
{
int ans=;
int i,j;
memset(covered,,sizeof(covered));
for(int d=n-;d>k;d--)
{
for(i=;i<nodes[d].size();i++)
{
int u=nodes[d][i];
if(covered[u]) continue; int v=u;
for(j=;j<k;j++)
v=fa[v];
dfs2(v,-,);
ans++;
}
}
return ans;
} int main()
{
int T;
int i,j;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&s,&k);
for(i=;i<=n;i++)
{
gr[i].clear();
nodes[i].clear();
}
for(i=;i<n;i++)
{
int u,v;
scanf("%d %d",&u,&v);
gr[u].push_back(v);
gr[v].push_back(u);
}
dfs(s,-,);
printf("%d\n",solve());
}
return ;
}

UVALive 3902 网络的更多相关文章

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

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

  2. UVaLive 3902 Network (无根树转有根树,贪心)

    题意:一个树形网络,叶子是客户端,其他的是服务器.现在只有一台服务器提供服务,使得不超k的客户端流畅,但是其他的就不行了, 现在要在其他结点上安装服务器,使得所有的客户端都能流畅,问最少要几台. 析: ...

  3. [UVALive 3902] Network

    图片加载可能有点慢,请跳过题面先看题解,谢谢 一道简单的贪心题,而且根节点已经给你了(\(S\)),这就很好做了. 显然,深度小于等于 \(k\) 的都不用管了(\(S\) 深度为0),那么我们只需要 ...

  4. LA 3902 网络

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

  5. UVALive 3902 Network (树+dfs)

    Consider a tree network with n nodes where the internal nodes correspond to servers and the terminal ...

  6. UVALive3902 Network[贪心 DFS&&BFS]

    UVALive - 3902 Network Consider a tree network with n nodes where the internal nodes correspond to s ...

  7. 辣些数据结构的思维题(思维题好难一个都不会TAT)

    洛谷P1268 树的重量 我觉得难点在于把每个叶子节点想象成分出来的叉 然后如果c是a--b这条边上分出来的,可以通过Dab,Dca,Dcb算出分叉边的长度, 长度=(Dac+Dbc-Dab)/2 怎 ...

  8. UVALive 5099 Nubulsa Expo 全球最小割 非网络流量 n^3

    主题链接:点击打开链接 意甲冠军: 给定n个点m条无向边 源点S 以下m行给出无向边以及边的容量. 问: 找一个汇点,使得图的最大流最小. 输出最小的流量. 思路: 最大流=最小割. 所以题意就是找全 ...

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

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

随机推荐

  1. Python开发程序:RPC异步执行命令(RabbitMQ双向通信)

    RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 不懂rpc的请移步h ...

  2. [Python] 删除指定目录下后缀为 xxx 的过期文件

    import os import time import datetime def should_remove(path, pattern, days): if not path.endswith(p ...

  3. REmap首次尝试--PC端

    在REchart项目中,实验此网址的内容,得到若干实例 针对此我针对北京市做了若干实验 第一:绘制北京市的填充地图 代码如下: >BJqu<-mapNames("beijing& ...

  4. ubuntu安装使用GitHub--PC端

    按照这个步骤安装并且初步使用 按照这个程序配置git的ssh,在git push时不用输入密码

  5. ferret32位安装

    首先在网上找到解决方案: 1.添加对32位的支持 dpkg --add-architecture i386 2.更新 apt-get clean && apt-get update & ...

  6. XPath、XQuery 以及 XSLT 函数

    存取函数 名称 说明 fn:node-name(node) 返回参数节点的节点名称. fn:nilled(node) 返回是否拒绝参数节点的布尔值. fn:data(item.item,...) 接受 ...

  7. poj 2376 Cleaning Shifts

    http://poj.org/problem?id=2376 Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  8. iptables 设置肯限制流量

    1.查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source ...

  9. ExtJs combobox模糊匹配

    下拉列表模糊查询(重要代码): listeners : { beforequery : function(e) { var combo = e.combo; if(!e.forceAll){ var ...

  10. ios异常错误

    1,mach_msg_trap处异常 http://www.jianshu.com/p/2b3f58c61d7d 在lldb下敲入bt (lldb) bt