题目描述

如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz

输入输出格式

输入格式:

第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N<=5000,M<=200000)

接下来M行每行包含三个整数Xi、Yi、Zi,表示有一条长度为Zi的无向边连接结点Xi、Yi

输出格式:

输出包含一个数,即最小生成树的各边的长度之和;如果该图不连通则输出orz

输入输出样例

输入样例#1: 复制

4 5
1 2 2
1 3 2
1 4 3
2 3 4
3 4 3

输出样例#1: 复制

7

说明

时空限制:1000ms,128M

数据规模:

对于20%的数据:N<=5,M<=20

对于40%的数据:N<=50,M<=2500

对于70%的数据:N<=500,M<=10000

对于100%的数据:N<=5000,M<=200000

#include <bits/stdc++.h>
#define MAXV 5005
#define INF 0x3fffffff
using namespace std;
struct Node
{int v ,w;Node(int _v ,int _w) : v(_v) ,w(_w) {}
};
vector<Node> G[MAXV];
int n ,m ,u ,v ,w;
int d[MAXV];
bool vis[MAXV];
int prim();
int main()
{scanf("%d%d" ,&n ,&m);for(int i=1 ;i<=m ;i++) {scanf("%d%d%d" ,&u ,&v ,&w);G[u].push_back(Node(v ,w));G[v].push_back(Node(u ,w));}int Ans=prim();if(Ans==-1) printf("orz");else printf("%d" ,Ans);return 0;
}
int prim()
{fill(d ,d+MAXV ,INF);d[1]=0;int ans=0;for(int i=1 ;i<=n ;i++) {int u=-1 ,minn=INF;for(int j=1 ;j<=n ;j++)if(!vis[j] && d[j]<minn) {u=j;minn=d[j];}if(u==-1)   return -1;vis[u]=true;ans+=d[u];for(int j=0 ;j<G[u].size() ;j++) {int v=G[u][j].v;if(!vis[v] && G[u][j].w<d[v])d[v]=G[u][j].w;}}return ans;
}

  

转载于:https://www.cnblogs.com/Roni-i/p/8674899.html

最小生成树-prim算法模板相关推荐

  1. 最小生成树prim算法———模板

    codevs.cn 最优布线问题 #include<cstdio> #include<cstring> bool u[101]; int g[101][101],minn[10 ...

  2. kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)

    kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题) 总题单 week 3 [kuangbin带你飞] 题单 最小生成树 + 线段树 Cli ...

  3. 最小生成树 - Prim算法

    最小生成树 - Prim算法 思路: 采用 贪心策略,每次选取连通块外延的最短边和对应的点放入连通块,再更新新的连通块外延的边.连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小. 时间复杂度: ...

  4. [Java学习] 最小生成树——Prim算法

    文章目录 最小生成树 Prim算法流程 应用实例 求最小生成树 最小生成树 百度百科上对于最小生成树的定义是这样的:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结 ...

  5. 最小生成树Prim算法Java版

    最小生成树Prim算法Java版 算法描述: 在一个加权连通图中,顶点集合V,边集合为E 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit. ...

  6. D-OJ刷题日记:使用邻接矩阵实现最小生成树Prim算法 题目编号:1135

    理解: [理解prim算法本质--让一棵小树逐渐长大] Prim算法:又称为加边法,即每次选择最小权值的边加入到生成树中,然后再更新权值,如此反复,保证每次最优来达到最优解. Prim算法生成树用的是 ...

  7. 西南科技大学OJ题 求最小生成树(Prim算法)1075

    求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...

  8. 最小生成树-Prim算法详解(含全部代码)

    目录 适用条件 测试所用图 算法详解 Prim算法代码 全部代码 实验结果 适用条件 加权连通图 测试所用图 所用原图及生成过程 其中,(a) 为原图,圆圈里面是节点的名称,边上的数字是边的权值.由实 ...

  9. HDU 1863畅通工程(最小生成树)(prim算法)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

最新文章

  1. 动图演示:手撸堆栈的两种实现方法!
  2. ExtJs之Ext.view.View
  3. jzoj3846-七天使的通讯【二分图判定】
  4. java web 邮件_JavaWeb -- 邮件收发
  5. tomcat 8优化配置
  6. Windows11以管理员身份运行命令窗口
  7. charrnn 诗歌_代码不是诗歌,它只是代码
  8. pid控制算法c语言,PID控制算法的C语言实现(三)
  9. orcale和mysql跨库查询_ORACLE跨数据库查询的方法
  10. 有道无术,术尚可求;有术无道,止于术!
  11. 双循环背景下的全球供应链机遇与挑战
  12. 微信朋友圈附近推效果怎么样?
  13. 幼儿园班级信息管理系统
  14. 零基础学c语言 第2版 pdf下载,《零基础学C语言(第2版)》.(康莉,李宽).[PDF].@ckook.pdf...
  15. 平均风向计算中对于风向角的判断
  16. 【动手学深度学习PyTorch版】6 权重衰退
  17. Anemometer适应新版pt-query-digest需要的调整
  18. 领导合影站位图_领导座次安排图,没有人会教你这些,但非常重要!(建议收藏)...
  19. Golang源码阅读笔记 - String
  20. fastboot 详解

热门文章

  1. Windows 技术篇 - 无需确认快速删除包含大量文件的目录,cmd删除文件的rmdir、del、erase和rd四种命令使用方法
  2. Linux CentOS各大网站镜像资源地址展示,各种rpm资源包下载地址,rpm安装包大全
  3. C++ leetcode 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
  4. E2. 比昨天更多的棒棒糖 (Hard)
  5. pyghon list指定位置插入字符的方法
  6. pip安装库速度较慢--常用的几个国内镜像
  7. 人工智能算法--KNN算法(C++实现)
  8. 8.依赖的传递、排除、冲突
  9. 用JQ去实现一个轮播效果
  10. HDU 1005 Number Sequence