最小生成树---在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。

题目要求:在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。
求大家告知怎么采用kruscal方法,数组存储边的方式来完成。求大侠帮忙~
能有详细的代码吗。。。

第1个回答  2011-01-12
void kruscal(int e1[],int v[],int e[][][],int n)
{
int i,j;
for(i=0,j=0;j<n-1;i++)
if(v[e[i][1]]!=v[e[i][2]]) { y(e[i][1],e[i][2],n); e1[j++]=i; }
}
void y(int a,int b int v[],int n)
{
int i;
for(i=0;i<n;i++)
if(v[i]==a) v[i]=b;
}
//e1保存选中的边的下标,例如第一个边选的是e的第一条边,那么有:e1[0]==0。
//v是节点,保存一个标志,连在一起的标志相等,e保存的是距离和两个点。
//e数组要求是按照距离从小到大有序的,排序函数就不用我写了吧。
// n是节点数。
//函数y需要声明在调用它的函数前面,功能:把下标是a的都换成b。
第2个回答  2011-01-09
迪杰斯特拉 算法…………
以某点 为顶点计算最短路径存入 path数组,循环n次找出最短的来!
第3个回答  2011-01-10
一楼说的不对,迪杰斯特拉是求一个点好其他点的最小距离。
就应该用楼主的普里姆或者克鲁斯卡算法。
代码网上应该有,自己看书,肯定有的。
第4个回答  2011-01-30
迪杰斯特拉是求一个点好其他点的最小距离本回答被提问者采纳
相似回答