最小支撑树prim)
来源:互联网 发布:图书管理系统数据库表 编辑:程序博客网 时间:2024/04/27 14:17
《数据结构与算法分析》
//2013/07/01 prim#include<iostream>using namespace std;const int INIT=30000;typedef int ** Graph;void InitGraph(Graph &G,int n,int * &visted,int *&D,int *&V){int i;int j;G=new int *[n];for(i=0;i<n;++i)G[i]=new int [n];for(i=0;i<n;++i)for(j=0;j<n;++j)G[i][j]=INIT;for(i=0;i<n;++i){visted[i]=0;//访问标志D[i]=INIT;//与相连节点的距离V[i]=0;//存放相邻节点}}void CreateGraph(Graph &G,int n,int edge){ int i; int j; int weight; int k; cout<<"Please Create The Graph"<<endl; for(k=0;k<edge;++k) { cin>>i>>j>>weight; G[i][j]=G[j][i]=weight; }}int mixvertex(Graph &G,int n,int *&D,int *&visted)//查找G中没有被访问且与相邻节点距离最小{ int i,v;for(i=0;i<n;++i)if(!visted[i] ){v=i;break;};for(i=i+1;i<n;++i){ if(!visted[i] && D[i]<D[v])v=i;} return v;}void prim(Graph &G,int s,int n,int * &visted,int *&D,int *&V){int i,v,w;V[0]=s;for(i=0;i<n;++i)//初始化第一个节点以及更新与其相邻节点的距离D[i]=G[s][i];visted[s]=1;for(i=1;i<n;++i){ v=mixvertex(G,n,D,visted);//求出 V[i]=v; visted[v]=1; for(w=0;w<n;++w) { if(!visted[w]&&D[w]>G[v][w])//更新剩余节点 { D[w]=G[v][w]; } }} }void print(int *&V,int n){int i;for(i=0;i<n;++i) cout<<V[i]<<endl;}int main(){int *visted;int *D;int *V;int n=6;int edge=8;int i=0;visted=new int[n];D=new int [n];V=new int [n];Graph G; InitGraph(G,n,visted,D,V);CreateGraph(G,n,edge);prim(G,0,n,visted,D,V);print(V,n);}
- 最小支撑树prim)
- 最小支撑树之prim算法
- 最小支撑(生成)树的prim算法 java
- prim算法求最小支撑树 打印支撑树边的集合 带图例说明
- 无向图的最小支撑树Prim算法的实现
- [图论]Prim算法求最小支撑树和最短路径
- 最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind
- 6.3.2 最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind
- Prim最小生成树
- 最小生成树 prim
- 最小生成树 Prim
- 最小生成树-Prim
- Prim最小生成树
- 最小生成树 Prim
- prim最小生成树
- 最小生成树prim
- 最小生成树 prim
- prim 最小生成树
- UITableViewCell自适应高度
- android .R文件无法生成的问题
- CXF 发布WebService - 客户端调用
- 用rand()和srand()产生伪随机数的方法总结
- 【编码与乱码】(05)---GBK与UTF-8之间的转换
- 最小支撑树prim)
- Oracle 创建用户 SQL语句
- 【编码与乱码】(06)---字符的各种值转换
- xenomai gpio IRQ
- 工作变得简单又高效 试试这八个WebApp
- 优秀的学习网站
- hadoop的dfs.replication
- JNI编程
- 用vc打开.exe文件(WinExec()函数的应用)