欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CSPS1206.CSP-S 2012 Day2 T3 疫情控制
CSP-S 2012 Day2 T3 疫情控制
题目描述
H 国有 个城市,这 个城市用 条双向道路相互连通构成一棵树, 号城市是首都,也是树中的根节点。
H 国的首都爆发了一种危害性极高的传染病。当局为了控制疫情,不让疫情扩散到边境城市(叶子节点所表示的城市),决定动用军队在一些城市建立检查点,使得从首都到边境城市的每一条路径上都至少有一个检查点,边境城市也可以建立检查点。但特别要注意的是,首都是不能建立检查点的。
现在,在 H 国的一些城市中已经驻扎有军队,且一个城市可以驻扎多个军队。一支军队可以在有道路连接的城市间移动,并在除首都以外的任意一个城市建立检查点,且只能在一个城市建立检查点。一支军队经过一条道路从一个城市移动到另一个城市所需要的时间等于道路的长度(单位:小时)。
请问最少需要多少个小时才能控制疫情。注意:不同的军队可以同时移动。
输入格式
第一行一个整数 ,表示城市个数。
接下来的 行,每行 个整数,,每两个整数之间用一个空格隔开,表示从城市 到城市 有一条长为 的道路。数据保证输入的是一棵树,且根节点编号为 。
接下来一行一个整数 ,表示军队个数。
接下来一行 个整数,每两个整数之间用一个空格隔开,分别表示这 个军队所驻扎的城市的编号。
输出格式
一个整数,表示控制疫情所需要的最少时间。如果无法控制疫情则输出 。
样例 #1
样例输入 #1
4
1 2 1
1 3 2
3 4 3
2
2 2
样例输出 #1
3
提示
【输入输出样例说明】
第一支军队在 号点设立检查点,第二支军队从 号点移动到 号点设立检查点,所需时间为 个小时。
【数据范围】
保证军队不会驻扎在首都。
- 对于 的数据,;
- 对于 的数据,,;
- 对于 的数据,,;
- 对于 的数据,;
- 对于 的数据,,。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |