LA3902 Network
来源:互联网 发布:软件维护网站安全 编辑:程序博客网 时间:2024/06/03 12:39
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <queue>using namespace std;const int maxn=1010;vector<int>gr[maxn],nodes[maxn];int n,s,k,fa[maxn];bool covered[maxn];void dfs(int u,int f,int d){fa[u]=f;//记录父节点 int nc=gr[u].size();if(nc==1&&d>k)//必须是叶子结点,并且距离s大于k(未被s覆盖){nodes[d].push_back(u);}for(int i=0;i<nc;i++){int v=gr[u][i];if(v!=f){dfs(v,u,d+1);//只覆盖到新服务器距离不超过k的节点 }}}void dfs2(int u,int f,int d){covered[u]=true;int nc=gr[u].size();for(int i=0;i<nc;i++){int v=gr[u][i];if(v!=f&&d<k){dfs2(v,u,d+1);}}}int solve(){int ans=0;memset(covered,0,sizeof(covered));for(int d=n-1;d>k;d--){for(int i=0;i<nodes[d].size();i++){int u=nodes[d][i];if(covered[u]){continue;}int v=u;for(int j=0;j<k;j++){v=fa[v];}dfs2(v,-1,0);//在结点v放服务器 ans++;}}return ans;}int main(){int T;cin>>T;while(T--){cin>>n>>s>>k;for(int i=1;i<=n;i++){gr[i].clear();nodes[i].clear();}for(int i=0;i<n-1;i++){int a,b;cin>>a>>b;gr[a].push_back(b);gr[b].push_back(a);}dfs(s,-1,0);cout<<solve()<<endl;}return 0;}
0 0
- LA3902 Network
- LA3902 - Network
- LA3902 Network
- LA3902 Network (树上dfs)
- UVA LA3902-network(树形dp)
- LA3902
- 网络 network,Seoul 2007 LA3902 解题感想
- LA3902网络
- 树上最优解+贪心+dfs+LA3902
- [network]
- NETWORK
- Network
- network
- network
- Network
- NETWORK
- network
- Network
- java抽象函数,抽象类
- jsp cms 部署(2)
- CF 101B - Buses
- MapReduce工作原理图文
- Proguard手册(少量进行了中文翻译)
- LA3902 Network
- NYOJ 228 士兵杀敌(五)
- SSH开发步骤及遇到的问题
- 一起学Maven(Maven聚合和继承)<四>
- canvas像素级操作实现滤镜之灰度效果、怀旧滤镜
- oracle数据库
- 电子电路分析方法
- 支持向量机 (SVM)从判定结果开始看
- Core Data