以下代码来自天勤数据结构
Prim
void Prim(Mgraph g,int v0,int &sum)
{
int lowcost[maxsize],vset[maxsize],v;
int i,j,k,min;
v=v0;
for(i=0;i<g.n;i++)
{
lowcost[i]=g.edges[v0][i];
vset[i]=0;
}
vset[v0]=1;
sum=0;
for(i=0;i<g.n-1;i++)
{
min=INF;
for(j=0;j<g.n;j++)
if(vset[j]==0 && lowcost[j]<min)
{
min=lowcost[j];
k=j;
}
vset[k]=1;
v=k;
sum+=min;
for(j=0;j<g.n;j++)
if(vset[j]==0 && g.edges[v][j]<lowcost[j])
lowcost[j]=g.edegs[v][j];
}
}
kruskal
typedef struct
{
int a,b;
int w;
}Road;
Road road[maxsize];
int v[maxsize];
int getroot(int a)
{
while(a!=v[a]) a=v[a];
return a;
}
void Kruskal(Mgraph g,int &sum,Road road[])
{
int i;
int N,E,a,b;
N=g.n;
E=g.e;
sum=0;
for(i=0;i<N;i++) v[i]=i;
sort(road,E);
for(i=0;i<E;i++)
{
a=getRoot(road[i].a);
b=getRoot(road[i].b);
if(a!=b)
{
v[a]=b;
sum+=road[i].w;
}
}
}