1.练习项目 :
问题描述
在一个遥远的国度里,有 n 个城市,它们被 n−1 条道路连接。这个国度的领袖小蓝和他的好友小桥决定要建立一个属于他们自己的国家。
但是,统治一个国家可不是件容易的事情。有很多的小偷和恐怖分子时刻准备着破坏国家的和平。经过小蓝和小桥深思熟虑后,他们得出一个结论:从每个城市出发,只要能够到达一个警察局,就可以确保国家的安全。
现在,这个国家里有 k 个警察局,分别位于 k 个不同的城市中。同时,这个国家的城市结构满足上述法律的要求。但是,小蓝认为 n−1 条道路实在是太多了,每条路都需要花费很多的维护费用,而这个国家正面临着财政紧缩的困境。因此,他希望能够关闭尽可能多的道路,同时又能确保国家的安全。
请你帮助小蓝找出能够关闭的最大道路数量。
输入格式
第一行包含两个整数 n,k,表示城市数量和警察局数量 (2≤n≤105,1≤k≤n)。
第二行包含 k 个整数 p1,...,pk,表示每个警察局所在的城市编号 (1≤pi≤n)。
接下来 n−1 行,每行包含两个整数 ui,vi,表示一条连接城市 ui 和 vi 的道路 (1≤ui,vi≤n,ui≠vi)。
保证这 n 个城市之间的道路可以保证任意两个城市之间都可以到达。
2.选择课程
在蓝桥云课中选择题库,选择题号3124并开始练习。
3.开始练习
(1)源码 :
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
int n,k;
cin>>n>>k;
cout<<k-1;
//已有k个城市有警局,还有n-k个城市没有警局,即只需n-k条道路
//(n-1)-(n-k)=k-1;已有的减去需要的等于可去掉的
return 0;
}
(2)检验结果
对此代码进行检验,检验后无报错,运行此代码,运行结果正确。
(3)练习心得:
注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法 是否切换 为英语模式;语法是否错误。