#include<iostream>
#include<cstring>
using namespace std;const int N = 510, INF = 0x3f3f3f3f;
int g[N][N];//存邻接矩阵
int dist[N];//存储其他点到当前最小生成树的距离
bool vis[N];//存最点是否在最小生成树中
int n, m;int prim()
{memset(dist, 0x3f, sizeof dist);dist[1] = 0;//初始化int res = 0;//最小生成树的最小距离for (int i = 0; i < n; i++)//n个点{int t = -1;for (int j = 1; j <= n; j++){if (!vis[j] && (t == -1 || dist[t] > dist[j]))//寻找边权最小的点{t = j;}}if (t == -1)break;//t == -1 所有点都已经加入最小生成树 可退出循环res += dist[t];//更新最小生成树的距离vis[t] = true;//将点加入最小生成树for (int j = 1; j <= n; j++){dist[j] = min(dist[j], g[t][j]);//更新从最小的点到他相邻的点的最小距离}}return res;
}int main()
{cin >> n >> m;memset(g, 0x3f, sizeof g);//初始化邻接矩阵while (m--){int x, y, w;cin >> x >> y >> w;g[x][y] = g[y][x] = min(g[x][y], w);}int t = prim();cout << t;return 0;
}
详细解决方案
prim(普里姆)
热度:26 发布时间:2023-12-01 01:29:37.0
相关解决方案
- 最小生成树算法(Prim+Kruskal)
- 算法-20-最小生成树+贪心算法(Prim+Kruskal)
- 生成树的两种算法 kruskal 和 prim
- (最小生成树问题:Prim,Kruskal)村村通公路
- 最小生成树模板(prim,kruskal)
- 暑假训练---prim--引水工程
- 生成树算法总结(Prim,Kruskal,Boruvka)
- C 语言 prim(深度优先改进)算法 生成迷宫
- 算法:最小生成树(Kruscal Prim)
- 2021-10-07(单源最短路,dfs剪枝,prim)
- POJ - 1251 Jungle Roads(最小生成树,Prim,Kruskal)
- prim(普里姆)
- 用Python写一个走迷宫的小程序(图形化:matplotlib,dfs,prim)
- 最小生成树模板及其dfs总结 (kruskal prim)
- POJ 3026 Borg Maze (Prim Algorithm)
- POJ 1258 Agri-Net(Prim Algorithm)
- POJ 1789 Truck History (Prim Algorithm)
- prim+dfs 藏宝图
- HDU--1233--prim()算法
- 最小生成树 - Prim
- POJ 1287 Networking(最小生成树,prim ,裸题)
- POJ 1789 Truck History(prim 最小生成树,裸题)
- prim-普里姆 poj 1287 示例 [ 实现用到并查集 ]
- prim 算法 c++实现
- 模板--最小生成树【prim】
- Prim-NYOJ-38-布线问题
- POJ 1258 Agri-Net - (MST-Prim)
- 【loj】#10066. 「一本通 3.1 练习 1」新的开始 (最小生成树·Prim)
- 【loj】#10064. 「一本通 3.1 例 1」黑暗城堡(最短路径生成树 dijkstra+Prim)
- 最小生成树(Prim)学习、代码实现