codeforces 337D Book of Evil(dp)

转载请注明出处: http://www.cnblogs.com/fraud/           ——by fraud

 

Book of Evil

Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This area contains n settlements numbered from 1 to n. Moving through the swamp is very difficult, so people tramped exactly n - 1 paths. Each of these paths connects some pair of settlements and is bidirectional. Moreover, it is possible to reach any settlement from any other one by traversing one or several paths.

The distance between two settlements is the minimum number of paths that have to be crossed to get from one settlement to the other one. Manao knows that the Book of Evil has got a damage range d. This means that if the Book of Evil is located in some settlement, its damage (for example, emergence of ghosts and werewolves) affects other settlements at distance d or less from the settlement where the Book resides.

Manao has heard of m settlements affected by the Book of Evil. Their numbers are p1, p2, ..., pm. Note that the Book may be affecting other settlements as well, but this has not been detected yet. Manao wants to determine which settlements may contain the Book. Help him with this difficult task.

Input

The first line contains three space-separated integers n, m and d (1 ≤ m ≤ n ≤ 100000; 0 ≤ d ≤ n - 1). The second line contains m distinct space-separated integers p1, p2, ..., pm (1 ≤ pi ≤ n). Then n - 1 lines follow, each line describes a path made in the area. A path is described by a pair of space-separated integers ai and bi representing the ends of this path.

Output

Print a single number — the number of settlements that may contain the Book of Evil. It is possible that Manao received some controversial information and there is no settlement that may contain the Book. In such case, print 0.

Sample test(s)
Input
6 2 3
1 2
1 5
2 3
3 4
4 5
5 6
Output
3
Note

Sample 1. The damage range of the Book of Evil equals 3 and its effects have been noticed in settlements 1 and 2. Thus, it can be in settlements 3, 4 or 5.

 

题意

给一棵n个结点的树,在树上的某个点上有一本"book of evil",在其周围的与其距离小于等于d的点都会受到其影响,已知m个受到影响的点,求有几个可能会有"book of evil"

 

通过维护一个结点到其子树中的最长距离,以及除去存在最长距离之外,到另外子树的最长距离,然后再dfs一遍即可。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <queue>
 5 #include <vector>
 6 using namespace std;
 7 #define MAXN 100010
 8 vector<int>G[MAXN];
 9 int dp[MAXN][2];
10 int pre[MAXN][2];
11 int ans=0;
12 int d;
13 void dfs(int u,int fa){
14     for(int i=0;i<G[u].size();i++){
15         int v=G[u][i];
16         if(v==fa)continue;
17         dfs(v,u);
18         int d1=dp[v][0]+1;
19         if(d1>dp[u][1]){
20             dp[u][1]=d1;
21             pre[u][1]=v;
22             if(dp[u][1]>dp[u][0]){
23                 swap(dp[u][0],dp[u][1]);
24                 swap(pre[u][0],pre[u][1]);
25             }
26         }
27     }
28 }
29 void dfs2(int u,int fa,int dis){
30     if(dis>d)return;
31     if(dp[u][0]<=d)ans++;//cout<<u<<endl;}
32     int d1=max(dp[u][0],dis)+1;
33     int d2=max(dp[u][1],dis)+1;
34     for(int i=0;i<G[u].size();i++)
35     {
36         int v=G[u][i];
37         if(v==fa)continue;
38         if(pre[u][0]==v)dfs2(v,u,d2);
39         else dfs2(v,u,d1);
40     }
41 }
42 int main()
43 {
44     ios::sync_with_stdio(false);
45     //freopen("in.in","r",stdin);
46     int m,n;
47     int u,v;
48     cin>>n>>m>>d;
49     for(int i=0;i<n;i++)dp[i][0]=dp[i][1]=-MAXN;
50     for(int i=0;i<n;i++)pre[i][0]=pre[i][1]=-1;
51     for(int i=0;i<m;i++){
52         cin>>u;
53         u--;
54         dp[u][0]=dp[u][1]=0;
55     }
56     for(int i=0;i<n;i++)G[i].clear();
57     for(int i=0;i<n-1;i++){
58         cin>>u>>v;
59         u--;v--;
60         G[u].push_back(v);
61         G[v].push_back(u);
62     }
63     ans=0;
64     dfs(0,-1);
65     dfs2(0,-1,-MAXN);
66     cout<<ans<<endl;
67     return 0;
68 }
代码君

 

转载于:https://www.cnblogs.com/fraud/p/4338858.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html 如何去滚动条,css怎么去除滚动条?

css可以通过overflow与scroll属性来实现去除滚动条效果。css设置overflow属性为hidden可以实现去除滚动条或设置scroll属性为no。1、这个可以用CSS实现 你可以用JS操作CSS方法一&#xff1a;设置CSS属性overflow为hidden。&#xff1c;body style"overflow:hidden"&a…

从基于Maven的Web应用程序获取版本字符串

打包maven项目时&#xff0c;它将自动在其中生成pom.properties文件&#xff0c;其中将包含版本&#xff0c;artifactId和groupId信息。 这些在运行时很方便拥有并显示给您的Web应用程序。 可以使用如下方法检索它。 public class Application {private String version;public…

【APICloud系列|31】成功上架5个应用商店总结(腾讯应用宝、阿里应用分发平台、华为开发者联盟、小米开放平台、百度开放平台)

应用商店的选择: 腾讯应用宝:http://open.qq.com/阿里应用商店(淘宝手机助手,UC应用商店,豌豆荚):http://open.uc.cn/百度手机助手:http://app.baidu.com/华为应用市场:http://developer.huawei.com/devunion/ui/devplan.html小米应用商店:http://dev.xiaomi.com/con…

PSPO表格

一、项目计划总结&#xff1a; 周活动总结表 日期 任务 听课 编写程序 阅读课本 准备考试 日总计 周日 周一 周二 300 100 30 430 周三 100 50 30 180 周四 200 80 …

html并行加载,html – 浏览器中的最大并行HTTP连接数?

我创建一些挂起的连接到http服务器(彗星&#xff0c;反向ajax等)。它工作确定&#xff0c;但我看到浏览器只允许同时给定域的两个挂起的连接。因此&#xff0c;如果用户在他们的浏览器的Tab1中查看我的网络应用程序&#xff0c;也尝试在Tab2中加载它&#xff0c;他们已经用尽了…

阿里云ECS服务器连接不上3306端口?

连不上3306端口一般有三种情况。 1 .本机上防火墙没有开放3306端口,需要自己配置入站规则,或者关闭本机防火墙。 2 .linux 服务器上的 iptables 防火墙没有开放3306端口, 或者关闭服务器上的防火墙。 打开 /etc/sysconfig/iptables 在 "-A INPUT –m state --sta…

UGUI 锚点

今天我们来学习下UGUI的锚点, 他是做什么的呢&#xff1f; 基本上就是用于界面布局. 1. 1个控件对应1个描点. 2. 描点分成四个小叶片, 每1个叶片 对应 控件四边框的角点 3. 不管屏幕如何放大缩小, 控件四边点与 每一个叶片对应的四边点距离不变.(换句话说,按钮的中心与描点的…

语文课外运用计算机探究,[小学语文]计算机在小学写字教学中的运用之我见

[小学语文]计算机在小学写字教学中的运用之我见随着经济的快速发展&#xff0c;教育也出现了加快发展、加快改革的势态。随着教育技术的不断增加&#xff0c;教学设备得以不断更新&#xff0c;教学手段变得更加现代化。特别是我们火星小学&#xff0c;计算机辅助教学已成为学校…

『OPEN3D』1.7 点云拟合问题

本专栏地址&#xff1a;https://blog.csdn.net/qq_41366026/category_12186023.html?spm1001.2014.3001.5482 1、平面拟合 2、直线拟合 3、圆形拟合 4、球形拟合

glassfish_具有GlassFish和一致性的高性能JPA –第1部分

glassfish您以前听说过连贯性吗&#xff1f; 可能是。 它是那些著名的内存网格解决方案之一&#xff0c;这些解决方案承诺了出色的快速数据访问和无限空间用于您经常使用的数据。 其中一些众所周知的竞争对手是Infinispan &#xff0c; Memcached和Terracotta Ehcache 。 它们都…

推荐几个开发高薪技术产品(APP、网站、小程序)的原型设计工具

工欲善其事必先利其器。作为一名产品经理&#xff0c;如何才能快速地设计一款产品&#xff1f;一款优秀的产品原型工具必不可少。如何才能选择一款适合自己的原型工具呢&#xff1f;Benson特意整理了11款产品原型工具以供参考&#xff0c;并学习曲线&#xff0c;性价比&#xf…

狼群战术

狼群战术 Time Limit : 1000 MS Memory Limit : 65536 KB Description 二战中德军潜艇使用狼群战术使得盟军的运输线遭受重大的损失。盟军截获了德军潜艇的通信电报&#xff0c;但电报显然是加了密的&#xff0c;经过盟军解密人员和情报人员的努力&#xff0c;终于解密了德军…

计算机网络和通信,计算机网络与通信技术

spContent本课程以谢希仁老师的第七版《计算机网络》为教材&#xff0c;采用随堂录制和录音棚录制两种方式满足同学们学习的不同习惯&#xff0c;本次开课加入了三个可以线上完成的重要实验。通过本门课程的学习&#xff0c;系统地建立计算机网络通信的理论体系&#xff0c;掌握…

APP界面常用的五种颜色搭配

众所周知&#xff0c;每一种颜色带给用户的视觉感受也是不同的。现在人们对手机的依赖程度&#xff0c;就能看到手机中APP的发展前景&#xff0c;那今天就跟大家聊聊如何通过颜色搭配的不同来进行移动端APP界面的布局和排版设计。移动端UI界面中通常是需要选取主色&#xff0c;…

JavaOne 2015 –提交的技巧和建议

大家都知道JavaOne 。 感觉就像一直在那儿。 而且&#xff0c;即使我们跌宕起伏&#xff0c;而地理位置也不是我们想要的那样&#xff0c;旧金山也很昂贵&#xff0c;而且和。 这是有关各种Java的顶级会议。 今年又再次成为程序委员会&#xff08;“ Java&#xff0c;DevOps和云…

Oracle 数据库导入导出 dmp文件

首先询问对方数据库的表空间名称和大小&#xff0c;然后在你的oracle中建立相应表空间&#xff0c;最后使用命令导入、导出数据。补充&#xff1a;1.要新建一个数据库&#xff1b; Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可 以把数据从远程数据库服务…

计算机网络课程计划,计算机网络教学计划2017

计算机网络教学计划2017教学计划(课程计划)是课程设置的整体规划&#xff0c;它规定不同课程类型相互结构的方式&#xff0c;也规定了不同课程在管理学习方式的要求及其所占比例。下面是小编整理的计算机网络教学计划范文&#xff0c;希望对你有帮助!计算机网络教学计划(一)一、…

hdu 4267 多维树状数组

题意&#xff1a;有一个序列 "1 a b k c" means adding c to each of Ai which satisfies a < i < b and (i - a) % k 0. (1 < a < b < N, 1 < k < 10, -1,000 < c < 1,000)"2 a" means querying the value of Aa. (1 < a …

微信服务商开发能力说明文档

最近看到很多人复制我的这篇文章,我也是醉了,你起码搞个转载,注明出处, 然后设置付费文档,发现也不好使,文章比较简短,别人也能免费看到我的文章全部内容, 无奈之下,再次打开这篇文章开始编辑, 前面增加一些废话, 看看有多少人复制我的文档,我都不想评论,找各…

html中scope的作用,AngularJS 作用域(Scope)

AngularJS 作用域(Scope)作用域(Scope)是一个存储应用数据模型的对象为 表达式 提供了一个执行上下文作用域的层级结构对应于 DOM 树结构作用域可以监听 表达式 的变化并传播事件作用域有什么作用域提供了 ($watch) 方法监听数据模型的变化作用域提供了 ($apply) 方法把不是由A…