C++课后习题训练记录Day201

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)练习心得:

注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法 是否切换 为英语模式;语法是否错误。

相关推荐
Escalating_xu13 分钟前
【C++入门基础(上)】从发展历程、学习路线到命名空间与输入输出
开发语言·c++
lch2011_yb14 分钟前
CSP-J 2023 小苹果
算法
jimy115 分钟前
C++ 中的rValue的判断---是否能“隐式移动”
开发语言·c++
五_谷_丰_登22 分钟前
平衡二叉搜索树讲解
数据结构·c++
星星.72225 分钟前
【图论】最小生成树|Prim+Kruskal算法
数据结构·c++·算法·图论
charlie11451419130 分钟前
Cinux · musl 静态移植:对齐 Linux ABI、铺初始栈,以及一个被 SMAP 拦下的潜伏 bug
linux·开发语言·c++·操作系统·开源项目
_Narcissus_40 分钟前
单调栈笔记及例题详解
数据结构·c++·笔记·算法·力扣·单调栈·洛谷
流浪0011 小时前
C/C++后端筑基系列(二):C++ 从基础到进阶
开发语言·c++