最小生成树中minium函数怎么写( 三 )

& t */ int Kruskal(Edge edge[], int cost[][VSIZE+1], int esize, int vsize, vector& t); int Prim (Edge edge[], int cost[][VSIZE+1], int esize, int vsize, vector& t); int main() { int cost[VSIZE+1][VSIZE+1];//0不用 Edge edge[9];//9条边 vector t;//用来存储最小代价生成树的顶点 int mincost;//最小代价 LoadData(cost, edge); if ( (mincost = Kruskal(edge, cost, 9, VSIZE, t))!=-1) { cout<<"最小代价是:"<, EdgeGreater> pq; int mincost = 0; for (int i = 0;i& t) { priority_queue, EdgeGreater> pq; vector sortededge; int i; for (i =0;i7.如何证明用 Kruskal's 算法生成的树是最小生成树为了避免最小生成树不唯一的问题,可以不妨假设这个图所有的边长都不相等
(注意最小生成树的总长度是原图边长的连续函数,所以可以这样加强条件)
然后用反证法,假定Kruskal算法中的第k步首次出现错误,算法选了E1,但实际上必须选另一条边E2才能得到最小生成树T0
E1连接了两个连通分支,这两个连通分支在最终的T0里是连通的,所以把T0和E1放在一起之后形成的图有一个环,在这个环里一定有k步或之后新选的边(如果没有的话仅凭前k-1条边和E1不会构成环),依照E1的定义,这个环里存在比E1长的边,用E1换掉这条边之后得到的树T1比T0更短,矛盾
8.数据结构 Prim和Kruskal最小生成树 的代码怎么写将城市看成是点,城市之间的距离看成是点之间的权值 。
下面是PRIM算法实现的最小生成树代码 。,利用邻接矩阵存储边的信息 。
程序已通过编译了,可以直接运行 。#include #includetypedef int VRType; typedef char InfoType;#define MAX_NAME 3/*顶点字符串的最大长度+1*/#define MAX_INFO 20/*相关信息字符串的最大长度+1*/ typedef char VertexType[MAX_NAME];#define INFINITY 32767/*用整型最大值代替无穷大*/#define MAX_VERTEX_NUM 20/*最大顶点个数*/ typedef enum GraphKind;/**/ typedef int PathMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef int ShortPathTable[MAX_VERTEX_NUM]; typedef struct { VRType adj; /*顶点关系类型 。