镖局运镖(kruskal算法)
镖局的运镖,就是运货(类似现在的物流)。镖局每到一个新地方开展业务,都需要对运镖途中的绿林好汉进行打点。好说话的打点费就比较低,不好说话的打点费就比较高。龙门镖局现在有一趟镖请你来规划路线,已知城市的地图,你需要选择一些道路进行疏通,以便镖局可以到达任意一个城市,要求花费的银子越少越好。
输入格式:
第一行有两个数n和m,n表示有n个城市(编号从1到n),m表示有m条道路。接下来m行,每行形如“a b c”用来表示一条道路,意思是城市a到城市b连通且打点需要花费的银子数是c。
输出格式:
若通过打点能抵达所有城市,则输出最少需要花费的银子总数。若不能抵达所有的城市则输出“impossible”。
输入样例:
3 3
1 2 1
1 3 2
2 3 4
输出样例:
3
kruskal算法是通过加边来建立最小生成树
prim算法通过加点来建立最小生成树
ac代码
#include<iostream>
#include<algorithm>
using namespace std;int n,m;
struct road{int a,b,cost;
}r[1001];
int f[1001];
int Find(int n){if(f[n]==n) return n;else return f[n] = Find(f[n]);
}
void Union(int x,int y)
{int a=Find(x),b=Find(y);if(a!=b) f[a]=b;
}
int cmp(road a,road b){return a.cost<b.cost;
}
void kruskal()
{for(int i=1;i<=n;i++){f[i]=i;}for(int i=0;i<m;i++)cin>>r[i].a>>r[i].b>>r[i].cost; sort(r,r+m,cmp);int sum = 0,t=0;for(int i=0;i<m;i++){if(t==n-1) break;if(Find(r[i].a)!=Find(r[i].b)){Union(r[i].a,r[i].b);t++;sum=sum+r[i].cost;}}if(t==n-1) cout<<sum;else cout<<"impossible";
}int main()
{cin>>n>>m;kruskal();return 0;
}
镖局运镖(kruskal算法)相关推荐
- 镖局运镖(最小生成树 Kruskal)
7-11 镖局运镖 (30 分) 镖局的运镖,就是运货(类似现在的物流).镖局每到一个新地方开展业务,都需要对运镖途中的绿林好汉进行打点.好说话的打点费就比较低,不好说话的打点费就比较高.龙门镖局现在 ...
- c语言编程镖局运镖,打点
网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它. IntersectionObserver是浏览器原生提供的构造函数: import'i ...
- 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)
目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...
- 基本数据结构(图: 基本结构,DFS,prim算法, kruskal算法)
#include <iostream> using namespace std; //约定: //1. 图是由很多节点(VERTEX)构成的, 因此图结构是由一个VERTEX的链表构成的, ...
- Kruskal算法 - C语言详解
最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总 ...
- 【数据结构】最小生成树 Prim算法 Kruskal算法
最小生成树应用场景: 假设以下场景,有一块木板,板上钉上一些钉子,这些钉子可以由一些细绳连接起来.假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样得情况,即用最少的细绳把所有的钉子连接起 ...
- ds图—最小生成树_Java: Kruskal算法生成最小生成树(邻接矩阵)
Java: Kruskal算法生成最小生成树(邻接矩阵): package 输出: Kruskal=36: (E,F) (C,D) (D,E) (B,F) (E,G) (A,B) 分析: Java: ...
- 生成树的概念,最小生成树Prim算法 Kruskal算法
求解最小生成树可以用Prim算法 Kruskal算法
- Kruskal算法构造最小生成树
问题[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)] 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) ...
最新文章
- 【青少年编程(第25周)】隔离终于解除了!
- r语言必学的十个包肖凯_家长专栏自闭症儿童语言康复训练
- Linux 下禅道和 SVN、GIT 集成插件发布
- OpenKG 祝大家新春快乐
- jqgrid treegrid 重新加载数据
- 动画以及View绘制中的addview实战
- 一篇文章玩转世界最强音乐Spotify API操作
- 机器学习:过拟合问题与其正则化解决
- html中页面跳转以及传值的处理
- Python 树莓派 引脚
- 手机连接WiFi无法上网,原来是这两个原因,快速解决上网
- VR和AR的联系和区别
- 经纬能源安全稳定怎样理财收益最大?怎样理财才干收益最大?
- 2022年河北二级建造师建设工程施工管理《施工合同管理》练习及答案
- OpenCV中Viz模块的安装(VS2015)
- 从新东方讲师到AI框架工程师,我的历次职业转折|OneFlow U
- TCP通信 、 UDP通信
- 自动提取论文公式方法
- com.intellij.ide.plugins.PluginManager$StartupAbortedException
- Android设置屏幕保持长亮