2144-数据结构实验之图论九:最小生成树
来源:互联网 发布:js选择文件保存路径 编辑:程序博客网 时间:2024/06/07 06:19
#include <iostream>#include <cstdio>#include <cstring>#define MAX 0x3f3f3f3fusing namespace std;int map[1123][1123];int vis[1123];int lowcost[1123];int flag, sum;void prim_MST(int n){ flag = 0; sum = 0; int k = 1; for(int i = 1; i <= n; i++) { lowcost[i] = map[i][1]; /// 初始化 } vis[1] = 1; for(int i = 2; i <= n; i++) { int t = MAX; for(int j = 1; j <= n; j++) { if(!vis[j] && t > lowcost[j]) /// 找到点未访问且权值最小的边 { t = lowcost[j]; k = j; /// 记录该点 } } if(t == MAX) /// 没有符合条件的点即此图不连通 { //cout << "-1" << endl; flag = 1; return ; } vis[k] = 1; sum+=t; /// 权值累加 for(int j = 1; j <= n; j++) { if(!vis[j] && map[j][k] < lowcost[j]) /// 如果此时点未访问且权值小于此时lowcost的值 { lowcost[j] = map[j][k]; /// 更新 } } }}int main(){ int n, m, cost; while(cin >> n >> m) { ///map初始化为无穷大,不是初始化为0; for(int i = 1;i <= n;i++) { for(int j = 1;j <= n;j++) { if(i == j) map[i][j] = 0; else map[i][j] = MAX; } } memset(vis, 0, sizeof(vis)); while(m--) { int u, v; cin >> u >> v >> cost; if(map[u][v] > cost) /// 窝草 重边是什么鬼!!!坑死了!!!!QAQ { map[u][v] = map[v][u] = cost; } } prim_MST(n); if(!flag) { cout << sum << endl; } } return 0;}
阅读全文
0 0
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 2144 数据结构实验之图论九:最小生成树
- 2144-数据结构实验之图论九:最小生成树
- OpenGL ES基础教程
- java将list写入到excel中并导出到本地(POI)
- vmware workstation 12安装出现 Microsoft Runtime DLL错误
- Python enumerate 用法总结
- 判断是否是IE浏览器
- 2144-数据结构实验之图论九:最小生成树
- java匿名对象的用法
- SpringBoot入门系列:第七篇 Spring Boot的测试
- HTML a元素
- linux 被控主机 远程开机
- android 发请求时loading
- EXECL常用表格
- 功能完善--购物车
- 360*640是什么设备的分辨率?