#Z0463. 巡逻1

2024-02-07 15:12
文章标签 巡逻 z0463

本文主要是介绍#Z0463. 巡逻1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

在一个地区中有 n 个村庄,编号为 1, 2, ..., n。有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其 他任一个村庄。每条道路的长度均为 1 个单位。 为保证该地区的安全,巡警车每天要到所有的道路上巡逻。警察局设在编号 为 1 的村庄里,每天巡警车总是从警察局出发,最终又回到警察局。

下图表示一个有 8 个村庄的地区,其中村庄用圆表示(其中村庄 1 用黑色的 圆表示),道路是连接这些圆的线段。为了遍历所有的道路,巡警车需要走的距 离为 14 个单位,每条道路都需要经过两次。 

为了减少总的巡逻距离,该地区准备在这些村庄之间建立 K 条新的道路, 每条新道路可以连接任意两个村庄。两条新道路可以在同一个村庄会合或结束 (见下面的图例(c))。 一条新道路甚至可以是一个环,即,其两端连接到同一 个村庄。 由于资金有限,K 只能是 1 。同时,为了不浪费资金,每天巡警车必须 经过新建的道路正好一次。 下图给出了一些建立新道路的例子:

在(a)中,新建了一条道路,总的距离是 11。

试编写一个程序,读取村庄间道路的信息和需要新建的道路数,

计算出最佳 的新建道路的方案使得总的巡逻距离最小,并输出这个最小的巡逻距离。

Format

Input

第一行包含两个整数 n

接下来 n – 1 行,每行两个整数 a, b, 表示村庄 a 与 b 之间有一条道路(1 ≤ a, b ≤ n)。

3 ≤ n ≤ 100,000, 1 ≤ K ≤ 2。

Output

输出一个整数,表示新建了 1条道路后能达到的最小巡逻距离。

Samples

输入数据 1

8 
1 2 
3 1 
3 4 
5 3 
7 5 
8 5 
5 6 

Copy

输出数据 1

11

思路

rt,有一棵树,要求我们在树上加上1两条边,是警察遍历时经过的路径最短,关于路径,有以下几个要求

  1. 造出来的路必须且仅经过一遍
  2. 允许出现某条路有某点连向同一个点
  3. 从一号节点出发,回到一号节点

只要不从自己连到自己(造的路必须通过),都是可以帮警察省下路程的,所以我们不妨考虑一下贪心地选择,即选择树上距离最长的两点,因为不管我们选择了哪两个点,省下的距离都是两点之间的距离 - 1(走造的那条路还要 1) 那么我们只要找到距离最大的两个点就可以省下最长的路程这就引出了我们的主角——树的直径,不会的可以看看

求树的直径(史上最详细,匠心之作)_树的直径存在负边权-CSDN博客

然后就可以省下树的直径-1的路啦(显然这是省的最多的),由于本来要走的路程是(n-1)*2(每条路走两次),所以答案就是

2 * (n - 1) - lzj + 1;//lzj是树的直径

代码

#include <bits/stdc++.h>
using namespace std;
int a,b,n,k,deep[1000001],zj,zjj,lzj;
vector<int> vec[1000001];
void dfs(int x,int fa,int d)
{deep[x] = d;for(int i = 0;i < vec[x].size();i++)if(vec[x][i] != fa)dfs(vec[x][i],x,d + 1);
}
void qzj()
{dfs(1,0,1);int t = 0;for(int i = 1;i <= n;i++)if(t < deep[i]){t = deep[i];zj = i;}dfs(zj,0,1);t = 0;for(int i = 1;i <= n;i++)if(t < deep[i]){t = deep[i];zjj = i;}lzj = t - 1;
}
int main()
{cin>>n;for(int i = 1;i < n;i++){cin>>a>>b;vec[a].push_back(b);vec[b].push_back(a);}qzj();cout<<2 * (n - 1) - lzj + 1;return 0;
}

结语

如果这篇博客对您有帮助的话,记得点赞关注收藏支持一下吖!q(≧▽≦q)

这篇关于#Z0463. 巡逻1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688105

相关文章

【UE5.1】NPC人工智能——07 NPC在巡逻过程中休息

目录 前言 效果 步骤 一、准备狮子休息的动画 二、实现狮子休息效果 三、随机行为 四、增加行为权重 前言         在上一篇中(【UE5.1】NPC人工智能——06 NPC攻击)我们已经实现了NPC狮子追到玩家后进行攻击的功能。本篇将在上一篇的基础上继续实现NPC在巡逻过程中偶尔休息的功能。 效果 步骤 一、准备狮子休息的动画 1. 找到狮子休息的动画

P3629 [APIO2010]巡逻(树的直径)

题目链接 易错点: l2必须要设置全局变量而不能设置局部变量,这是由于设置局部变量无法兼顾所有情况造成的.bfs并设置直径上边权为-1后,如果k=2则不能继续直接使用bfs获得答案,这是bfs的拓展加点性造成的(类比dijkstra).如果两个变量可以用一个变量导出就用一个变量.  BFS方法正确性的证明: 如果源点在直径上:显然正确.如果源点不在直径上:既然源点不在直径上那么直径

校园安保巡逻机器人

2023年8月5日,陕西西安一高校实验室起火冒烟,导致学校化学实验室发生火灾。2022年8月3日,一名歹徒持械闯入江西吉安安福县城的一家私立幼儿园,对着无辜的幼儿行凶伤人,造成3死6伤。 像这样的事故有不断地发生,也导致安全始终是校园的重中之重。然而,当前校园安保面临着诸多棘手的问题和严峻的挑战。比如设施设备安全、消防安全、治安安全等多个层面。传统的校园安全管理对人力的依赖明显,安保人员只能在监

湖北恩施:警方租赁警犬街头巡逻震慑违法犯罪

恩施警方租赁警犬参与社会治安巡逻防控 张东平 摄 恩施警方租赁警犬参与社会治安巡逻防控 张东平 摄 中新网恩施1月17日电 (张东平)“哇,有警犬在巡逻!”1月16日晚9时许,在湖北恩施土家族苗族自治州城区,6条训练有素的警犬由训导员带队,来到广场、商业圈等人员密集场所徒步巡逻。 当晚,为加强人员密集场所治安防范、打击违法犯罪的能力,恩施州公安局探索通过租赁的方式,从武汉新月山犬业管理公

walking机器人仿真教程-应用-多点导航实现房间内巡逻检查

系列文章目录 walking机器人仿真教程-启动仿真环境walking机器人仿真教程-查看仿真环境相关话题walking机器人仿真教程-仿真控制walking机器人仿真教程-激光建图-仿真slam_toolbox算法建图walking机器人仿真教程-激光建图-仿真gmapping算法建图walking机器人仿真教程-激光建图-仿真cartographer算法建图walking机器人仿真教程

【树的直径】洛谷_3629 [APIO2010]巡逻

题意 有一颗树,要在其中加入 K ( k ≤ 2 ) K(k\leq 2) K(k≤2)条边,使得本来遍历这颗树要经过的边数最少,同时加入的边一定要正好走过 1 1 1次。 思路 当 K = 1 K=1 K=1时,显然是在树的直径的两个点之间连一条边,因为这样可以少走一次直径,而直径又是最长的。 当 K = 2 K=2 K=2时,新建的边如果与之前的边没有环重叠的话也是和 K = 1 K=1

精准定位安全续航 无人机解决方案打造交通巡逻新模式

现代城市交通管理是城市现代化的重要组成部分,但传统的交通管理系统存在一系列复杂繁琐的问题,同时,交警执勤也存在较大的安全隐患。为应对这一挑战,复亚智能深入研究无人机技术及应用,推出了一套全面的无人机解决方案,旨在提高城市交通管理效率,使其更加智能安全。 一、数据采集终端 复亚智能无人机解决方案的数据采集终端具有高精度的定位导航能力,能够在任务中实现目标的精准定位和飞行航迹规划。在飞

基于单片机的消防巡逻小车设计

智能小车循迹与避障运动控制系统的设计 摘  要:本设计主要由STC89C52单片机来进行控制,通过输入输出两个端口控制驱动模块来调节电机的工作状态。本设计预利用机器视觉,通过识别条带状路标实现自主导航且利用超声波模块实时检测距离以实现避障功能,利用光电传感器模块自动循迹以实现循迹功能,通过液晶屏显示小车与障碍物之间的距离。本设计以STC89C52单片机,光电传感器,超声波模块和L298N驱动模块

ROS开发笔记(7)——利用amcl、move_base 进行导航、基于Python编写巡逻机器人导航代码

在前期构建地图的基础上,本文将利用 amcl(自适应蒙特卡洛定位算法)来在地图中定位机器人,然后在此基础上利用move_base 在地图中对机器人导航。主要内容如下: 1、amcl(自适应蒙特卡洛定位算法)节点基本原理 2、move_base 节点基本工作原理 3、在地图中定位机器人 4、在rivz中导航 5、编写代码导航 1、amcl(自适应蒙特卡洛定位算法)节点基本原理 1.1、

春运首日东莞启动直升机巡逻救援护航旅客

春运首日东莞公安交警携手中国人保财险启动直升机巡逻护航。图为东莞公安交警与人保救援直升机“空地配合”护航春运安全。 李映民 摄 春运首日东莞公安交警携手中国人保财险启动直升机巡逻护航。图为东莞公安交警与人保救援直升机“空地配合”护航春运安全。 李映民 摄 中新网东莞1月21日电 (李映民 李纯)为保障春运期间群众出行和道路交通安全,东莞市公安局交警支队联合中国人保财险东莞市分公司21日共同