【转载】最小生成树
来源:互联网 发布:网络基础知识ppt 编辑:程序博客网 时间:2024/06/05 06:56
接着是Prim算法的O(n^2)算法,用于稠密图:# include <algorithm>
# include <cstdio>
using namespace std;
const int MAXN = 10000;
const int MAXM = 100000;
struct Edge{
int u;
int v;
int value;
bool operator<(const Edge& x) const{
return this -> value < x.value;
}
};
Edge e[MAXM];
int father[MAXN];
int find_root(int x){
return father[x] = (father[x] == x ? x : find_root(father[x]));
}
inline void union_set(int s1,int s2){
father[find_root(s1)] = find_root(s2);
}
int main(){
int Ans = 0;
int n,m;
scanf("%d%d",&n,&m);
for (int i=0;i<n;++i) father[i] = i;
for (int i=0;i<m;++i){
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].value);
--e[i].u; --e[i].v;
}
sort(e+0,e+m);
for (int i=0;i<m;++i){
if (find_root(e[i].u) != find_root(e[i].v)){
union_set(e[i].u,e[i].v);
Ans += e[i].value;
}
}
printf("%d\n",Ans);
}
# include <cstdio>
using namespace std;
const int MAXN = 5010;
const int INF = 10000000;
int len[MAXN][MAXN];
int minP[MAXN];
int n,m;
bool used[MAXN];
int Ans = 0;
int main(){
scanf("%d%d",&n,&m);
int u,v,l;
int _tAns = 0;
for (int i=0;i<n;++i){
for (int j=0;j<n;++j){
len[i][j] = INF;
}
}
for (int i=0;i<m;++i){
scanf("%d%d%d",&u,&v,&l);
--u; --v;
len[u][v] = len[v][u] = l;
}
for (int i=0;i<n;++i) minP[i] = 0;
used[0] = true;
int minPosLenu,minPosLenv;
for (int i=1;i<n;++i){
minPosLenu = minPosLenv = 0;
for (int j=1;j<n;++j){
if (!used[j] && len[j][minP[j]] < len[minPosLenu][minPosLenv]){
minPosLenu = j;
minPosLenv = minP[j];
}
}
Ans += len[minPosLenu][minPosLenv];
used[minPosLenu] = true;
for (int j=0;j<n;++j){
if (len[j][minP[j]] > len[j][minPosLenu]){
minP[j] = minPosLenu;
}
}
}
printf("%d\n",Ans);
return 0;
}
- 【转载】最小生成树
- 最小生成树算法介绍(转载)Prim+Kruskal
- 转载:图的最小生成树和最短路径
- [转载]有向图的最小生成树,最小树形图
- 最小比例 最小生成树
- 最小生成树&&次最小生成树
- 最小生成生成树计数
- 树+最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树Kruskal
- kruskal 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树问题
- 上一个十年,下一个十年
- 【kuandui】二叉堆
- 对付内存改写问题的银弹
- 【最短路径】Floyd算法
- MIPS架构培训之Cache原理
- 【转载】最小生成树
- tomcat启动报java.io.EOFException错误
- MIPS CP0 Hazards问题--从Release1到Release2
- 【数据结构】树状数组
- MIPS架构培训之MMU原理
- 【数据结构】线段树
- 异常捕捉与反汇编分析
- 【总结】【线段树】2016.1.24CXB
- 模拟指令断点