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

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

相关推荐
xiaoye-duck20 小时前
《C++ 工具库实战》高性能日志 spdlog:从基础使用到工程化封装
c++·第三方库
重生之小比特20 小时前
【算法拾光】前缀和|连续的子数组和 + 和相同的二元子数组
算法·leetcode·哈希算法
努力努力再努力wz20 小时前
【Lua入门系列】从 C++ 迭代器到 Lua 迭代器:一文深入理解 Lua 有状态以及无状态迭代器与泛型for、闭包、ipairs、pairs 和 next
开发语言·c++·lua
一去不复返的通信er20 小时前
力扣15:盛最多水的容器
算法·leetcode
努力实干20 小时前
第二阶段 · 第 7 课:C++ 多线程与线程安全
开发语言·c++·安全
Navigator_Z20 小时前
LeetCode //C - 1309. Decrypt String from Alphabet to Integer Mapping
c语言·算法·leetcode
潇湘秦20 小时前
SQL Server 2016+ 整数类型元数据扩宽(秒级变更)完整说明
数据库·算法
Figo_Cheung1 天前
Figo基于结构空间算法假设(SSAH)的生成式大模型优化范式与工程实现边界研究——提出适应AGI架构演化的自适应拓扑感知表征机制
算法·架构·agi
小菜要扣篮1 天前
Ubuntu 下使用 vscode 打开 C++ 项目后,无法通过 F12 定位到定义问题解决
c++·vscode·ubuntu
wuminyu1 天前
JVM规范学习总结:class执行性能差异
java·linux·c语言·jvm·c++