P1195 口袋的天空

口袋的天空

题目背景

小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。

有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。

题目描述

给你云朵的个数 N N N,再给你 M M M 个关系,表示哪些云朵可以连在一起。

现在小杉要把所有云朵连成 K K K 个棉花糖,一个棉花糖最少要用掉一朵云,小杉想知道他怎么连,花费的代价最小。

输入格式

第一行有三个数 N , M , K N,M,K N,M,K

接下来 M M M 行每行三个数 X , Y , L X,Y,L X,Y,L,表示 X X X 云和 Y Y Y 云可以通过 L L L 的代价连在一起。

输出格式

对每组数据输出一行,仅有一个整数,表示最小的代价。

如果怎么连都连不出 K K K 个棉花糖,请输出 No Answer

样例 #1

样例输入 #1

3 1 2
1 2 1

样例输出 #1

1

提示

对于 30 % 30\% 30% 的数据, 1 ≤ N ≤ 100 1 \le N \le 100 1N100 1 ≤ M ≤ 1 0 3 1\le M \le 10^3 1M103

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 1 0 3 1 \le N \le 10^3 1N103 1 ≤ M ≤ 1 0 4 1 \le M \le 10^4 1M104 1 ≤ K ≤ 10 1 \le K \le 10 1K10 1 ≤ X , Y ≤ N 1 \le X,Y \le N 1X,YN 0 ≤ L < 1 0 4 0 \le L<10^4 0L<104

分析

若将每个云朵看作图中的节点,则可理解为花费最小代价连成k个树,可以使用Kruskal做最小生成树,若每连接一个点,使cnt++,若n-cnt==k则说明已联通,退出即可

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=10005;
int n,m,k;
int p[maxn];
int ans;
struct Edge{int u,v,w;}edges[maxn];
struct cmp { bool operator () (const Edge &a,const Edge &b) { return a.w<b.w; }
};
int find(int x) { p[x]==x?x:p[x]=find(p[x]); }
void init(int n) { for(int i=1;i<=n;i++) p[i]=i; }
int main()
{cin>>n>>m>>k;for(int i=1;i<=m;i++) { cin>>edges[i].u>>edges[i].v>>edges[i].w; }init(n);int cnt=0;sort(edges+1,edges+1+m,cmp());for(int i=1;i<=m;i++){int x=find(edges[i].u),y=find(edges[i].v);if(find(edges[i].u)!=find(edges[i].v)) {p[find(edges[i].u)]=find(edges[i].v);ans+=edges[i].w;cnt++;}if (k==n-cnt){cout<<ans;break;}}if (k!=n-cnt)cout<<"No Answer";return 0;
}

分析

struct Edge{int u,v,w;}edges[maxn];
struct cmp { bool operator () (const Edge &a,const Edge &b) { return a.w<b.w; }
};

利用结构体存图,需要按边权排序,自定义一个函数

	for(int i=1;i<=m;i++){int x=find(edges[i].u),y=find(edges[i].v);if(find(edges[i].u)!=find(edges[i].v)) {p[find(edges[i].u)]=find(edges[i].v);ans+=edges[i].w;cnt++;}if (k==n-cnt){cout<<ans;break;}}

并查集维护,需要判断是否已完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/24684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac m1使用docker安装kafka

1.拉取镜像 docker pull zookeeper docker pull wurstmeister/kafka 2.启动zookeeper docker run -d --name zookeeper -p 2181:2181 zookeeper 3.设置zookeeper容器对外服务的ip Zookeeper_Server_IP$(docker inspect zookeeper --format{{ .NetworkSettings.IPAddress }}…

Rocky(centos) jar 注册成服务,能开机自启动

概述 涉及&#xff1a;1&#xff09;sh 无法直接运行java命令&#xff0c;可以软连&#xff0c;此处是直接路径 2&#xff09;sh脚本报一堆空格换行错误&#xff1a;需将转成unix标准格式&#xff1b; #切换到上传的脚本路径 dos2unix 脚本文件名.sh 2&#xff09;SELINUX …

【博客685】prometheus 出现NaN场景以及如何去除干扰(Not a Number)

prometheus 出现NaN场景以及如何去除干扰(Not a Number) 1、在prometheus中使用NaN来表示无效数值或者结果 场景&#xff1a; 一些监控系统使用 NaN 作为空值或缺失值&#xff0c;但在 Prometheus 中 NaN 只是另一个浮点值。Prometheus 表示缺失数据的方式是让数据缺失。Prom…

哪些年,我们编程四处找的环境依赖

基于Maven&#xff0c;快速构建SSM项目 <properties><!-- 将spring和有关的升级版本&#xff0c;设置为5.0.5--><spring.version>5.0.5.RELEASE</spring.version><!-- 将mybatis和有关的升级版本&#xff0c;设置为3.1.1--><my…

深度Q学习的收敛性分析:通过渐近分析方法

深度Q学习收敛性分析:通过渐近分析方法 1. 概述1.1. 理论的相关研究1.2. 主要贡献1.2.1. 目标网络1.2.2. 经验回放2. 神经网络2.1. 前馈网络2.2. 激活函数σ2.3. 深度Q网络3. 深度Q学习:算法和假设4. 收敛性分析4.1. DQN的连续化深度Q学习是一种重要的强化学习算法,它涉及到…

W6100-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W6100-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解…

【C# 基础精讲】C# 数据类型概述

在C#中&#xff0c;数据类型可以分为以下三大类&#xff1a;值类型、引用类型和指针类型。每种类型都具有不同的特点和适用场景&#xff0c;了解这些类型对于编写高效和稳健的C#程序至关重要。下面将依次介绍这三大类数据类型&#xff0c;并列出C#中常见的每种类型。 值类型 值…

【Linux命令详解 | cd命令】Linux系统中用于更改当前工作目录的命令

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 使用cd命令切换到特定目录2. 使用cd命令与路径相关的特殊字符3. 使用cd命令切换到包含空格的目录4. 使用cd命令切换到前一个和后一个目录5. 使用cd命令切换到用户的主目录6. 使用cd命令与绝对路径和相对路径 总结…

宁波银行最新内推码 MK4913

宁波银行最新内推码 MK4913 内推码&#xff1a; MK4913 内推二维码 &#xff1a; 网申路径&#xff1a; 网页端&#xff1a;登录宁波银行招聘官网&#xff1a; https://zhaopin.nbcb.com.cn 选择【校园招聘】-【招聘岗位】手机端&#xff1a;关注【宁波银行招聘】公众号&a…

【物理】带电粒子在磁场和电场中移动的 3D 轨迹研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

无涯教程-Perl - chdir函数

描述 此功能将当前工作目录更改为EXPR,如果未指定,则更改为用户的主目录。此函数调用等效于Unix命令 cd EXPR 。 语法 以下是此函数的简单语法- chdir EXPRchdir返回值 如果失败,此函数返回0,如果成功,则返回1。 例 以下是显示其基本用法的示例代码,假设您在/user/home/…

java之jmh初识及使用

最近有场景需要数据支撑json的toJsonString方法和java原生的toString方法的运行速度&#xff0c;因此选用了JMH测试工具。 以下代码大致意思是&#xff1a;初始化一个list集合&#xff0c;放入100个对象&#xff0c;然后遍历这个集合&#xff0c;调用fastjson的toJsonString方…

助力618-Y的混沌实践之路 | 京东云技术团队

一、写在前面 1、混沌是什么&#xff1f; 混沌工程&#xff08;Chaos Engineering&#xff09;的概念由 Netflix 在 2010 年提出&#xff0c;通过主动向系统中引入异常状态&#xff0c;并根据系统在各种压力下的行为表现确定优化策略&#xff0c;是保障系统稳定性的新型手段。…

CS 144 Lab Six -- building an IP router

CS 144 Lab Six -- building an IP router 引言路由器的实现测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Six 对应的PDF: Lab Checkpoint 5: building an IP router 引言 在本实验中&#xff0c;你将在现有的NetworkInterface基础上实现一个IP路由器&#xf…

Linux知识点 -- 进程间通信(二)

Linux知识点 – 进程间通信&#xff08;二&#xff09; 文章目录 Linux知识点 -- 进程间通信&#xff08;二&#xff09;一、System V共享内存1.原理2.申请共享内存3.System V共享内存的使用4.为共享内存添加访问控制 二、信号量&#xff08;概念理解&#xff09;1.概念2.信号量…

OpenCV之信用卡识别实战

文章目录 代码视频讲解模板匹配文件主程序(ocr_template_match.py)myutils.py 代码 链接: https://pan.baidu.com/s/1KjdiqkyYGfHk97wwgF-j3g?pwdhhkf 提取码: hhkf 视频讲解 链接: https://pan.baidu.com/s/1PZ6w5NcSOuKusBTNa3Ng2g?pwd79wr 提取码: 79wr 模板匹配文件 …

Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart

文章目录 为什么要将程序配置成服务&#xff1f;1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本&#xff1a;使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本&#xff1a;默认使用systemd作…

【敏捷开发】测试驱动开发(TDD)

测试驱动开发&#xff08;Test-Driven Development&#xff0c;简称TDD&#xff09;是敏捷开发模式中的一项核心实践和技术&#xff0c;也是一种设计方法论。TDD有别于以往的“先编码&#xff0c;后测试”的开发模式&#xff0c;要求在设计与编码之前&#xff0c;先编写测试脚本…

1310. 数三角形

题目链接&#xff1a;https://www.acwing.com/problem/content/1312/ 首先不考虑三点共线的情况一共有 种&#xff0c;现在来计算三点共线的情况 1.三点在一条直线上 2.三点在一条竖线上 3.三点在一条斜线上&#xff0c;正反斜线对称&#xff0c;仅需考虑一边的情况 如果…

docker安装mysql

安装mysql docker pull mysql:8.0.31 单机启动&#xff1a; docker run -itd --name mysql1 -p 3305:3306 -e MYSQL_ROOT_PASSWORD123456 mysql:8.0.31 --lower_case_table_names1 单机指定配置文件启动&#xff1a; docker run \ --name mysql-8 \ -d \ -p 3306:3306 …