HackerRank "Prim's (MST) : Special Subtree"
An intuitive Prim algorithm impl.
#include <vector>
#include <iostream>
#include <queue>
#include <unordered_map>
#include <unordered_set>
using namespace std; struct Edge
{
Edge() :s(), t(), d() {}
Edge(unsigned rs, unsigned rt, unsigned rd) :
s(rs), t(rt), d(rd) {} unsigned s;
unsigned t;
unsigned d; bool operator()(const Edge &e1, const Edge &e2)
{
return e1.d > e2.d;
}
}; int main()
{
long n, m; cin >> n >> m;
// from -> to -> (length, id)
unordered_map<unsigned, unordered_map<unsigned, unsigned>> g;
for (int i = ; i < m; i++)
{
unsigned a, b, d; cin >> a >> b >> d;
g[a][b] = g[b][a] = d;
}
unsigned s; cin >> s; unordered_set<unsigned> pickedSet; // linked node inx priority_queue<Edge, vector<Edge>, Edge> q;
for (auto &kv : g[s])
{
q.push(Edge(s, kv.first, kv.second));
}
pickedSet.insert(s); unsigned long long ret = ;
while (!q.empty())
{
Edge picked = q.top();
q.pop();
if (pickedSet.count(picked.t)) continue; pickedSet.insert(picked.t); // add new choices
for (auto &kv : g[picked.t])
{
q.push(Edge(picked.t, kv.first, kv.second));
} ret += picked.d;
}
cout << ret << endl;
return ;
}
HackerRank "Prim's (MST) : Special Subtree"的更多相关文章
- prim求MST
PRIM==>>MST模板 #include <iostream> using namespace std; #define typec int #define V 3 con ...
- HackerRank "Kruskal (MST): Really Special Subtree"
Kruskal Algorithm is based on Union-Find - quite intuitive. #include <vector> #include <ios ...
- Prim求MST最小生成树
最小生成树即在一个图中用最小权值的边将所有点连接起来.prim算法求MST其实它的主要思路和dijkstra的松弛操作十分相似 prim算法思想:在图中随便找一个点开始这里我们假定起点为“1”,以点1 ...
- hdu 4756 MST+树形dp ****
题意:给你n(n = 1000)个二维点,第一个点是power plant,还有n - 1个点是dormitories.然后现在知道有一条寝室到寝室的边是不能连的,但是我们不知道是哪条边,问这种情况下 ...
- prim模板
]; int n; ][]; ]; int prim(){ int i,j,mi,v; ;i<n;i++){ d[i]=map[][i]; vis[i]=; } ;i<=n;i++){ m ...
- 最小生成树之Prim算法--蓝白点思想
Prim算法: 以前一直不是很明白,Prim算法,今天就来终结一下. Prim算法采用与Dijkstra.Bellman-Ford算法一样的“蓝白点”思想:白点代表已经进入最小生成树的点,蓝点代表未进 ...
- 堆优化Prim 最小生成树 模板
#include <bits/stdc++.h> using namespace std; const int MAXN = 5005; const int MAXM = 200005; ...
- 图论算法(五)最小生成树Prim算法
最小生成树\(Prim\)算法 我们通常求最小生成树有两种常见的算法--\(Prim\)和\(Kruskal\)算法,今天先总结最小生成树概念和比较简单的\(Prim\)算法 Part 1:最小生成树 ...
- bzoj 3714
题意:n<=2000的盒子,有一些里面有球,再给你所有c[i][j](1<=i<=j<=n),即告诉你[i,j]里面球的总数的奇偶性需要花费c[i][j],现在求知道所有的盒子 ...
随机推荐
- js高级程序设计(七)函数表达式
定义函数的方式有两种:一种是函数声明,另一种就是函数表达式.函数声明的语法是这样的. function functionName(arg0, arg1, arg2) { //函数体 } Firefox ...
- OPENGL学习之路(0)--安装
此次实验目的: 安装并且配置环境. 1 下载 https://www.opengl.org/ https://www.opengl.org/wiki/Getting_Started#Downloadi ...
- iframe自适应方法
ifram高度自适应,两种方法 方法一:父页面获取子页面高度,改变父页面高度以下代码加到父页面 <script language="javascript"> //获取i ...
- .net中大数据的处理
前提:sqlserver数据库 问题:需要从数据量达千万级或是更大的数据库中找出一条需要的数据. 1,先分析大数据的结构,以及数据的流向.以及此过程中那些地方会有瓶颈. 2,针对瓶颈制定方案: 1.1 ...
- .htaccess的301重定向代码
把不带www的域名301到带www的域名 RewriteEngine On RewriteCond %{http_host} ^example.com$ [NC] RewriteRule ^(.*)$ ...
- SQLite存储类(数据类型)
SQLite数据类型更普遍,采用动态类型系统. 说是数据类型,更像是存储类,如:INTEGER存储类就包含多种不同长度的整数数据类型 [INTEGER]带符号的整数类型 [REAL]浮点值,小数类型 ...
- 常用的工具cmd命令
1.stikynot 2.psr 3.cmd 4.calc 5.mspaint 6.ping
- js动画之简单运动一
虽然现在css3已经有了很多动画效果希望后面有时间也写一些博客,但是先开始我们的基础动画的学习. 1.制作动画常用的属性就是left,right,height,width,opacity等属性 2.因 ...
- CsvReader,CsvWriter的使用以及解决中文乱码
public void Csv(){ try { String[] stringList; String sourceFilePath = "D:\\111\\前海自身.csv"; ...
- c#新手之1-如何组织类及相互调用
不知道这个文章的名字起的对不对,姑且这么叫吧.我在这之前用c语言写程序几乎很少用函数调用来解决问题,都是用全局变量然后面向过程对数据做简单的处理,这就造成了我在学习c@之后仍有这个毛病,好点的时候有个 ...