P1340 兽径管理 题解|最小生成树
题目大意
洛谷中链接
推荐文章:并查集入门
原文
约翰农场的牛群希望能够在 N N N 个草地之间任意移动。草地的编号由 1 1 1 到 N N N。草地之间有树林隔开。牛群希望能够选择草地间的路径,使牛群能够从任一 片草地移动到任一片其它草地。 牛群可在路径上双向通行。
牛群并不能创造路径,但是他们会保有及利用已经发现的野兽所走出来的路径(以下简称兽径)。每星期他们会选择并管理一些或全部已知的兽径当作通路。
牛群每星期初会发现一条新的兽径。他们接着必须决定管理哪些兽径来组成该周牛群移动的通路,使得牛群得以从任一草地移动到任一草地。牛群只能使用当周有被管理的兽径做为通路。
牛群希望他们管理的兽径长度和为最小。牛群可以从所有他们知道的所有兽径中挑选出一些来管理。牛群可以挑选的兽径与它之前是否曾被管理无关。
兽径决不会是直线,因此连接两片草地之间的不同兽径长度可以不同。 此外虽然两条兽径或许会相交,但牛群非常的专注,除非交点是在草地内,否则不会在交点换到另外一条兽径上。
在每周开始的时候,牛群会描述他们新发现的兽径。如果可能的话,请找出可从任何一草地通达另一草地的一组需管理的兽径,使其兽径长度和最小。
题目简述
给定 N ( 1 ≤ N ≤ 200 ) N(1≤N≤200) N(1≤N≤200) 个节点, 1 ≤ W ≤ 6000 1≤W≤6000 1≤W≤6000 条边,第 i ( 1 ≤ i ≤ W ) i(1 \leq i \leq W) i(1≤i≤W) 条边包含三个数 x , y , w x,y,w x,y,w,分别表示连接的点和边权。每次输入一条边后输出当前最小生成树的边权和,若无解输出 -1。
样例输入
4 6
1 2 10
1 3 8
3 2 3
1 4 3
1 3 6
2 1 2
样例输出
-1
-1
-1
14
12
8
思路
由于 N N N 较小,可考虑对于每一次输入跑一遍克鲁斯卡尔算法,复杂度 O ( W 2 l o g W ) O(W^2 log W) O(W2logW),不能接受。
观察题目,从 N N N 入手,考虑我们已经连上所有边形成最小生成树的情况,如下图:

此时加入一条 1 3 6 的边,我们对已经有的 N − 1 N-1 N−1 条边和输入的 1 1 1 条边共 N N N 条边跑克鲁斯卡尔算法(代码实现部分我用的优先队列,可以替换成 sort,单次复杂度均为 O ( N l o g N ) O(NlogN) O(NlogN),可以接受),每次多出的一条边删掉,再将跑完的边压入优先队列,可实现单次查询复杂度为 O ( N l o g N ) O(NlogN) O(NlogN)。

重复以上操作即可。

代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,w;
int head[205];
int find(int x) {return head[x] == x?x:head[x] = find(head[x]);
}
struct node{int x,y,w;friend bool operator <(node a,node b) {return a.w > b.w;}
}edge[205];
priority_queue<node>ed;
signed main() {scanf("%lld %lld",&n,&w);while(w--) {node new_ed;scanf("%lld %lld %lld",&new_ed.x,&new_ed.y,&new_ed.w);ed.push(new_ed);for(int i = 1;i <= n;i++) head[i] = i;int cnt = 0,ans = 0;while(!ed.empty()) {new_ed = ed.top(),ed.pop();if(find(new_ed.x) != find(new_ed.y)) {head[find(new_ed.y)] = find(new_ed.x);cnt++;edge[cnt] = new_ed;ans += new_ed.w;}if(cnt == n - 1) break;}if(cnt < n - 1) printf("-1\n");else printf("%lld\n",ans);while(!ed.empty()) ed.pop();for(int i = 1;i <= cnt;i++) ed.push(edge[i]);}return 0;
}相关文章:
P1340 兽径管理 题解|最小生成树
题目大意 洛谷中链接 推荐文章:并查集入门 原文 约翰农场的牛群希望能够在 N N N 个草地之间任意移动。草地的编号由 1 1 1 到 N N N。草地之间有树林隔开。牛群希望能够选择草地间的路径,使牛群能够从任一 片草地移动到任一片其它草地。 牛群可在…...
Python,Maskrcnn训练,cannot import name ‘saving‘ from ‘keras.engine‘ ,等问题集合
Python版本3.9,tensorflow2.11.0,keras2.11.0 问题一、module keras.engine has no attribute Layer Traceback (most recent call last):File "C:\Users\Administrator\Desktop\20240801\代码\test.py", line 16, in <module>from mrc…...
Linux常用工具
文章目录 tar打包命令详解unzip命令:解压zip文件vim操作详解netstat详解df命令详解ps命令详解find命令详解 tar打包命令详解 tar命令做打包操作 当 tar 命令用于打包操作时,该命令的基本格式为: tar [选项] 源文件或目录此命令常用的选项及…...
AI未来的发展如何
AI(人工智能)的发展前景非常广阔,随着技术的不断进步和应用场景的不断拓展,AI将在多个领域发挥重要作用。以下是对AI发展前景的详细分析: 一、技术突破与创新 生成式AI的兴起:以ChatGPT为代表的生成式AI技…...
若依替换首页上的logo
...
sed的使用示例
场景:使用sed将多个空格变成单空格,再使用cut来切分得到需要的结果 得到后面这个文件名: ls ./ drwxr-x— 2 root root 6 Jul 18 9:00 7b40f1412d83c1524af7977593607f15 drwxr-x— 2 root root 6 Jul 18 14:00 50af29cef2c65a9d28905a3ce831bcb7 drwxr-x— 2 root root 6 Jul…...
学历不是障碍:大专生如何成功进入软件测试行业
摘要: 在当今技术驱动的职场环境中,软件测试已成为一个关键的职业领域。尽管许多人认为高学历是进入这一行业的先决条件,但实际上,大专学历的学生同样有机会在软件测试领域取得成功。本文将探讨大专生如何通过技能提升、实践经验和…...
文件解析漏洞—IIS解析漏洞—IIS6.X
目录 方式 1:目录解析 方式 2:畸形文件解析 方式 3:PUT 上传漏洞(123.asp;.jpg 解析成 asp) 环境:Windows server 2003 添加 IIS 管理工具——打开 IIS——添加网站 创建完成之后,右击创建的…...
Sqlmap中文使用手册 - Brute force模块参数使用
目录 1. Brute force模块的帮助文档2. 各个参数的介绍2.1 --common-tables2.2 --common-columns2.3 --common-files 1. Brute force模块的帮助文档 Brute force:These options can be used to run brute force checks--common-tables Check existence of common tables--c…...
ubuntu20.04 开源鸿蒙源码编译配置
替换华为源 sudo sed -i "shttp://.*archive.ubuntu.comhttp://repo.huaweicloud.comg" /etc/apt/sources.list && sudo sed -i "shttp://.*security.ubuntu.comhttp://repo.huaweicloud.comg" /etc/apt/sources.list 安装依赖工具 如果是ubun…...
程序员面试 “八股文”在实际工作中是助力、阻力还是空谈?
“八股文”在实际工作中是助力、阻力还是空谈? 作为现在各类大中小企业面试程序员时的必问内容,“八股文”似乎是很重要的存在。但“八股文”是否能在实际工作中发挥它“敲门砖”应有的作用呢?有IT人士不禁发出疑问:程序员面试考…...
广告从用户点击开始到最终扣费的过程
用户点击广告 用户在网页或移动应用上看到广告,并点击广告。这一事件触发了整个广告处理流程。 广告请求触发 用户点击广告后,客户端(如浏览器、APP)向广告系统发送广告点击请求。请求通常包含以下信息: 用户ID 设备信…...
Linux系统编程-信号进程间通信
目录 异步(Asynchronous) 信号 数据结构 1.kill 2.alarm 3.pause 4.setitimer 5.abort 信号集(sigset_t类型) 1.sigemptyset 2.sigfillset 3.sigaddset 4.sigdelset 5.sigismember 信号屏蔽 1.sigprocmask 2.sigpending 3.sigsus…...
Attention Module (SAM)是什么?
SAM(Spatial Attention Module,空间注意力模块)是一种在神经网络中应用的注意力机制,特别是在处理图像数据时,它能够帮助模型更好地关注输入数据中不同空间位置的重要性。以下是关于SAM的详细解释: 1. 基本…...
【C语言】堆排序
堆排序即利用堆的思想来进行排序,总共分为两个步骤: 1. 建堆 升序:建大堆 降序:建小堆 原因分析: 若升序建小堆时间复杂度是O(N^2) 升序建大堆,时间复杂度O(N*logN) 所以升序建大堆…...
ntp服务重启报错Failed to restart ntpd.service: Unit is masked.
问题概述: 重启ntp服务报错Failed to restart ntpd.service: Unit is masked,使用systemctl unmask ntpd.service命令关闭屏蔽还是报错Failed to restart ntpd.service: Unit is masked 解决方法: 重装ntp服务 yum remove ntpyum install…...
面试题-每日5到
16.Files的常用方法都有哪些? Files.exists():检测文件路径是否存在 Files.createFile():创建文件 Files.createDirectory():创建文件夹 Files.delete():删除一个文件或目录 Files.copy():复制文件 Files.move():移动文件 Files.size():查看文件个数 Files.read():读…...
代码美学大师:打造Perl中的个性化代码格式化工具
代码美学大师:打造Perl中的个性化代码格式化工具 在软件开发过程中,代码的可读性至关重要。Perl,作为一种灵活的脚本语言,允许开发者以多种方式实现代码格式化。自定义代码格式化工具不仅能提升代码质量,还能加强团队…...
成为一名月薪 2 万的 web 安全工程师需要掌握哪些技能?
现在 web 安全工程师比较火,岗位比较稀缺,现在除了一些大公司对学历要求严格,其余公司看中的大部分是能力。 有个亲戚的儿子已经工作 2 年了……当初也是因为其他的行业要求比较高,所以才选择的 web 安全方向。 资料免费分享给你…...
Linux中如何添加磁盘分区
在Linux中添加分区通常涉及到几个步骤,包括识别磁盘、创建分区、格式化分区,以及挂载或将其用作特定的文件系统类型(如LVM、RAID等)。以下是一个基本的步骤指南,假设你正在使用命令行界面(CLI)和…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
