镖局运镖(最小生成树)

简介: 镖局运镖(最小生成树)

镖局的运镖,就是运货(类似现在的物流)。镖局每到一个新地方开展业务,都需要对运镖途中的绿林好汉进行打点。好说话的打点费就比较低,不好说话的打点费就比较高。龙门镖局现在有一趟镖请你来规划路线,已知城市的地图,你需要选择一些道路进行疏通,以便镖局可以到达任意一个城市,要求花费的银子越少越好。


输入格式:

第一行有两个数n和m,n表示有n个城市(编号从1到n),m表示有m条道路。接下来m行,每行形如“a b c”用来表示一条道路,意思是城市a到城市b连通且打点需要花费的银子数是c。


输出格式:

若通过打点能抵达所有城市,则输出最少需要花费的银子总数。若不能抵达所有的城市则输出“impossible”。


输入样例:

1. 3 3
2. 1 2 1
3. 1 3 2
4. 2 3 4

结尾无空行


输出样例:

3

结尾无空行


思路:每次都将权值最小的边加入集合

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int p[N];
int find(int x)
{
    if(x!=p[x]) p[x]=find(p[x]);
    return p[x];
}
struct node{
    int x,y,z;
}s[N];
bool cmp(node a,node b)
{
    return a.z<b.z;
}
int main()
{
    int n,m,sum=0;
    cin>>n>>m;
    for(int i=1;i<=n;i++) p[i]=i;
    for(int i=0;i<m;i++) cin>>s[i].x>>s[i].y>>s[i].z;
    sort(s,s+m,cmp);//对边权排序
    for(int i=0;i<m;i++)
    {
        if(find(s[i].x)!=find(s[i].y))//合并
        {
            p[find(s[i].x)]=find(s[i].y);
            sum+=s[i].z;
        }
    }
    int cnt=0;
    for(int i=1;i<=n;i++)
        if(find(i)==i) cnt++;
    if(cnt==1) cout<<sum;//连通
    else cout<<"impossible";
    return 0;
}


目录
相关文章
【鸿蒙4.0】ArkUI组件-Image
【鸿蒙4.0】ArkUI组件-Image应用及需要注意的问题
1162 3
|
存储 Kubernetes Cloud Native
一文搞懂云原生架构
目前,每个 IT 资源或产品都作为服务提供。而且伴随云计算的滚滚浪潮,云原生(CloudNative)的概念应运而生,云原生很火,火得一塌糊涂,都0202年了,如果还不懂云原生,那真的out了。因此,云原生软件开发成为每个企业的关键要求,无论其规模和性质如何。在加入云计算潮流之前,了解什么是云原生架构以及如何为云原生应用程序需求设计正确的架构非常重要。
一文搞懂云原生架构
|
消息中间件 存储 NoSQL
深入Redis消息队列:Pub/Sub和Stream的对决【redis第六部分】
深入Redis消息队列:Pub/Sub和Stream的对决【redis第六部分】
946 0
|
11月前
|
监控 API 计算机视觉
CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
CompreFace 是一个在 GitHub 上拥有 6.1k Star 的轻量级人脸识别库,支持 API 和 SDK。它由 Exadel 公司开发,基于深度学习技术,提供高效、灵活的人脸识别解决方案。CompreFace 支持多种模型(如 VGG-Face、OpenFace 和 Facenet),具备多硬件支持、丰富的功能服务(如人脸检测、年龄性别识别等)和便捷的部署方式。适用于安防监控、商业领域和医疗美容等多个场景。
1264 4
|
Java 网络安全 Windows
Kali渗透测试:使用 Armitage生成被控端和主控端
Kali渗透测试:使用 Armitage生成被控端和主控端
201 2
|
机器学习/深度学习 自动驾驶 算法
深度学习之旋转包围盒检测
旋转包围盒检测是一种高级目标检测方法,旨在识别图像中目标的精确位置和方向。与传统的轴对齐矩形框(水平包围盒)不同,旋转包围盒(Rotated Bounding Box, RBB)允许检测框随目标旋转,从而更紧密地包围目标,尤其适用于长条形、倾斜或旋转的物体。深度学习在旋转包围盒检测中展现了强大的能力,通过训练神经网络模型,能够有效检测和回归旋转包围盒。
265 2
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
198 8
|
存储 前端开发 安全
强化用户体验与安全性:前端单点登录和统一认证的最佳实践与区别
互联网发展了这么多年,各种更新皆为了提供更好更安全的上网环境。同时为了提供更好的用户体验、减少用户反复输入用户名和密码的繁琐操作,并确保账户安全,前端领域中的单点登录(SSO)和统一认证(Unified Authentication)成为了重要概念。
强化用户体验与安全性:前端单点登录和统一认证的最佳实践与区别
|
API Docker 容器
SenseVoice实现语音转文字
这篇文章介绍了如何使用SenseVoice实现语音转文字的功能,包括通过Docker部署服务、使用网页界面或API进行语音文件的转换,并提供了详细的部署与使用步骤。
2622 1
SenseVoice实现语音转文字
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
159 7
React技术栈-react使用的Ajax请求库用户搜索案例

热门文章

最新文章