prim算法初体验
来源:互联网 发布:郭天祥十天学会单片机4 编辑:程序博客网 时间:2024/06/11 05:40
题目链接
#include <vector>#include <iostream>#include <algorithm>#include <string.h>#include <stdio.h>using namespace std;const int size = 501;/////////////////////////////primint map[size][size];int v,e;int dis[size];bool visit[size];int prim(){ memset(visit,false, sizeof(visit)); int sum = 0; // 首先任意选一个点,计算到另一个集合的距离 for (int i = 2; i <= v; ++i) { dis[i] = map[1][i]; } visit[1] = true; // 循环找n-1次 for (int i = 0; i < v-1; ++i) { int m = 0x7fffffff, u = -1; for (int j = 2; j <= v; ++j) { if (!visit[j]&&dis[j]<m){ m = dis[j]; u = j; } } sum += m; visit[u] = true; // 找到下一个加入集合的点 //然后更新dis的值 for (int k = 2; k <=v ; ++k) { if (!visit[k]&&dis[k]>map[u][k]){ dis[k] = map[u][k]; } } } return sum;}int main(){ int testcase; scanf("%d",&testcase); while (testcase--){ memset(map,0x7f, sizeof(map)); scanf("%d %d",&v,&e); int a,b,c; for (int i = 0; i < e; ++i) { scanf("%d %d %d",&a,&b,&c); map[a][b] = c; map[b][a] = c; } int nodecost = 0x7fffffff; for (int i = 0; i < v; ++i) { int temp; scanf("%d",&temp); nodecost = min(nodecost,temp); } cout<<nodecost+prim()<<endl; }}
阅读全文
0 0
- prim算法初体验
- prim 算法
- Prim算法
- Prim算法
- prim算法
- Prim算法
- Prim算法。
- Prim 算法
- Prim算法
- prim算法
- Prim算法
- Prim算法
- Prim算法
- prim算法
- prim算法
- Prim算法
- Prim算法
- prim算法
- Day015
- 运行SSM项目报IncompleteElementException
- Halide学习笔记----Halide tutorial源码阅读6
- Yaf安装与部署
- Java学习-IO流-read()和write()详解
- prim算法初体验
- ffmpeg支持android硬件解码mediacodec
- 关于Eclipse安装了反编译插件,无法查看源码问题
- mysql5.7中解决中文乱码的问题
- 深度学习之---Caffe(一)
- NavigationView获取头像点击事件
- spring batch demo 注解版
- 计算两个整数相加之和
- 利用UIDynamicAnimator做弹珠弹跳小游戏