最小生成树-prim算法模板
题目描述
如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz
输入输出格式
输入格式:
第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N<=5000,M<=200000)
接下来M行每行包含三个整数Xi、Yi、Zi,表示有一条长度为Zi的无向边连接结点Xi、Yi
输出格式:
输出包含一个数,即最小生成树的各边的长度之和;如果该图不连通则输出orz
输入输出样例
4 5 1 2 2 1 3 2 1 4 3 2 3 4 3 4 3
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算法模板相关推荐
- 最小生成树prim算法———模板
codevs.cn 最优布线问题 #include<cstdio> #include<cstring> bool u[101]; int g[101][101],minn[10 ...
- kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)
kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题) 总题单 week 3 [kuangbin带你飞] 题单 最小生成树 + 线段树 Cli ...
- 最小生成树 - Prim算法
最小生成树 - Prim算法 思路: 采用 贪心策略,每次选取连通块外延的最短边和对应的点放入连通块,再更新新的连通块外延的边.连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小. 时间复杂度: ...
- [Java学习] 最小生成树——Prim算法
文章目录 最小生成树 Prim算法流程 应用实例 求最小生成树 最小生成树 百度百科上对于最小生成树的定义是这样的:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结 ...
- 最小生成树Prim算法Java版
最小生成树Prim算法Java版 算法描述: 在一个加权连通图中,顶点集合V,边集合为E 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit. ...
- D-OJ刷题日记:使用邻接矩阵实现最小生成树Prim算法 题目编号:1135
理解: [理解prim算法本质--让一棵小树逐渐长大] Prim算法:又称为加边法,即每次选择最小权值的边加入到生成树中,然后再更新权值,如此反复,保证每次最优来达到最优解. Prim算法生成树用的是 ...
- 西南科技大学OJ题 求最小生成树(Prim算法)1075
求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...
- 最小生成树-Prim算法详解(含全部代码)
目录 适用条件 测试所用图 算法详解 Prim算法代码 全部代码 实验结果 适用条件 加权连通图 测试所用图 所用原图及生成过程 其中,(a) 为原图,圆圈里面是节点的名称,边上的数字是边的权值.由实 ...
- HDU 1863畅通工程(最小生成树)(prim算法)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
最新文章
- 动图演示:手撸堆栈的两种实现方法!
- ExtJs之Ext.view.View
- jzoj3846-七天使的通讯【二分图判定】
- java web 邮件_JavaWeb -- 邮件收发
- tomcat 8优化配置
- Windows11以管理员身份运行命令窗口
- charrnn 诗歌_代码不是诗歌,它只是代码
- pid控制算法c语言,PID控制算法的C语言实现(三)
- orcale和mysql跨库查询_ORACLE跨数据库查询的方法
- 有道无术,术尚可求;有术无道,止于术!
- 双循环背景下的全球供应链机遇与挑战
- 微信朋友圈附近推效果怎么样?
- 幼儿园班级信息管理系统
- 零基础学c语言 第2版 pdf下载,《零基础学C语言(第2版)》.(康莉,李宽).[PDF].@ckook.pdf...
- 平均风向计算中对于风向角的判断
- 【动手学深度学习PyTorch版】6 权重衰退
- Anemometer适应新版pt-query-digest需要的调整
- 领导合影站位图_领导座次安排图,没有人会教你这些,但非常重要!(建议收藏)...
- Golang源码阅读笔记 - String
- fastboot 详解
热门文章
- Windows 技术篇 - 无需确认快速删除包含大量文件的目录,cmd删除文件的rmdir、del、erase和rd四种命令使用方法
- Linux CentOS各大网站镜像资源地址展示,各种rpm资源包下载地址,rpm安装包大全
- C++ leetcode 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
- E2. 比昨天更多的棒棒糖 (Hard)
- pyghon list指定位置插入字符的方法
- pip安装库速度较慢--常用的几个国内镜像
- 人工智能算法--KNN算法(C++实现)
- 8.依赖的传递、排除、冲突
- 用JQ去实现一个轮播效果
- HDU 1005 Number Sequence