热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

洛谷P1195口袋的天空

题目链接https:www.luogu.orgproblemnewshowP1195题目背景小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。有很多云飘在那里,看起来很

题目链接

https://www.luogu.org/problemnew/show/P1195


题目背景

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

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


题目描述

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

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


输入输出格式

输入格式:

每组测试数据的

第一行有三个数N,M,K(1N1000,1M10000,1K10)

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

30%的数据N <= 100,M <= 1000,N100,M1000

输出格式:

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

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


思路

有一个定理:N个点用N-1条边连接成一个连通块,形成的图形只可能是树,没有别的可能。

那么有如下的关系: 


所以我们如果想要连出k棵树,就需要连n-k条边。

题目要求用n朵云连出k个棉花糖。因为每个棉花糖都是连通的,那么每个棉花糖就相当于是一棵树。

就是说要用n个节点连出k棵树。即要用n-k条边连出k棵树。

也就是说要花费连出n-k条边的代价。

既然一定要花费连出n-k条边的代价,那么当然要选择代价最小的边连起来。

所以给每条可以连的边按代价从小到大排个序,然后连n-k条边造k个最小生成树就可以了。 

(思路是偷的,代码自己打的,逃!)


代码

#include
#include<string>
#include
#include
#include
#include
#include
#include
using namespace std;

int n,m,k;
int sum=0,ans=0;
int pre[1001];

struct bian {
    int u,v,w;
} b[10001];

bool comp(bian a,bian b){
    return a.w<b.w;
}
int find(int x) {
    if(pre[x]==x)return x;
    return pre[x]=find(pre[x]);
}

int main() {
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1; i<=n; i++) pre[i]=i;
    for(int i=1; i<=m; i++) {
        scanf("%d%d%d",&b[i].u,&b[i].v,&b[i].w);
    }
    stable_sort(b+1,b+m+1,comp);
    for(int i=1; i<=m; i++) {
        int fx=find(b[i].u),fy=find(b[i].v);
        if(fx!=fy) {
            pre[fx]=fy;
            sum++;
            ans+=b[i].w;
        }
        if(sum==n-k) {
            cout<<ans;
            return 0;
        }
    }
    printf("No Answer");
    return 0;
}

 


推荐阅读
  • 张正友相机标定算法解析:无需棋盘格
    本文深入探讨了张正友教授于1998年提出的单平面标定技术,该方法结合了传统标定与自标定的优势,通过简易的棋盘格实现了高效准确的相机标定。 ... [详细]
  • 本文探讨了在SQL Server中处理几何类型列时遇到的INTERSECT操作限制,并提供了解决方案,包括通过转换数据类型和使用额外表结构的方法。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文介绍如何手动实现一个字符串连接函数,该函数不依赖于C语言的标准字符串处理函数,如strcpy或strcat。函数原型为void concatenate(char *dest, char *src),其主要作用是将源字符串src追加到目标字符串dest的末尾。 ... [详细]
  • Python中Seaborn库的整体风格配置详解
    本文介绍了Seaborn,这是一个基于Matplotlib的Python数据可视化库,旨在简化统计图形的绘制过程。文章详细探讨了Seaborn的不同主题风格及其配置方法。 ... [详细]
  • 心理学经典:《思考致富》
    《思考致富》是由美国著名成功学大师拿破仑·希尔撰写的一部重要著作,该书基于希尔长达20年的深入研究和访谈,探讨了个人成功的核心要素。书中不仅揭示了成功的关键,还提供了一系列实用的方法和策略。 ... [详细]
  • 本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 菜鸟物流用户增长部现正大规模招聘P6及以上级别的JAVA工程师,提供年后入职选项。 ... [详细]
  • 本文将详细介绍如何在二进制和十六进制之间进行准确的转换,并提供实际的代码示例来帮助理解这一过程。 ... [详细]
  • 本题要求计算一组正整数的最小公倍数(LCM)。输入包括多组测试数据,每组数据首先给出一个正整数n,随后是n个正整数。 ... [详细]
  • PyCharm 安装与首个 Python 程序实践
    本文将指导您如何安装 PyCharm,并通过创建一个简单的 'Hello, World' 程序来初步体验这一强大的 Python 集成开发环境。 ... [详细]
  • 本文提供了详细的JDK下载和安装步骤,包括多个可靠的下载源、环境配置以及如何验证安装成功。同时,文章还涉及版权问题处理和个人见解分享。 ... [详细]
  • 本文详细介绍了如何在 Vue CLI 3.0 和 2.0 中配置 proxy 来解决开发环境下的跨域问题,包括具体的配置项和使用场景。 ... [详细]
  • 下半年学期如期而至,课程安排密集,每周需完成18学时的学习任务,涉及软件工程、客户关系管理和C程序设计等多门课程。除了繁重的教学任务,时隔八年再次担任班主任的角色,旨在更深入地了解和支持学生们。 ... [详细]
author-avatar
蔡麟松_800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有