阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。[说明] Kruskal算法是一种构造图的最
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。[说明]Kruskal算法是一种构造图的最小生成树的方法。设G为一无向连通图,令T是由G的顶点构成的于图,Kmskal算法的基本思想是为T添加适当的边使之成为最小生成树:初始时,T中的点互相不连通;考察G的边集E中的每条边,若它的两个顶点在T中不连通,则将此边添加到T中,同时合并其两顶点所在的连通分量,如此下去,当添加了n-1条边时,T的连通分量个数为1,T便是G的一棵最小生成树。下面的函数void Kruskal(EdgeType edges[],int n)利用Kruskal算法,构造了有n个顶点的图 edges的最小生成树。其中数组father[]用于记录T中顶点的连通性质:其初值为father[i]=-1 (i=0,1,…,n-1),表示各个顶点在不同的连通分量上;若有father[i]=j,j>-1,则顶点i,j连通;函数int Find(int father[],int v)用于返回顶点v所在树形连通分支的根结点。[函数]define MAXEDGE 1000typedef struct{ int v1;int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
[说明]Kruskal算法是一种构造图的最小生成树的方法。设G为一无向连通图,令T是由G的顶点构成的于图,Kmskal算法的基本思想是为T添加适当的边使之成为最小生成树:初始时,T中的点互相不连通;考察G的边集E中的每条边,若它的两个顶点在T中不连通,则将此边添加到T中,同时合并其两顶点所在的连通分量,如此下去,当添加了n-1条边时,T的连通分量个数为1,T便是G的一棵最小生成树。下面的函数void Kruskal(EdgeType edges[],int n)利用Kruskal算法,构造了有n个顶点的图 edges的最小生成树。其中数组father[]用于记录T中顶点的连通性质:其初值为father[i]=-1 (i=0,1,…,n-1),表示各个顶点在不同的连通分量上;若有father[i]=j,j>-1,则顶点i,j连通;函数int Find(int father[],int v)用于返回顶点v所在树形连通分支的根结点。[函数]define MAXEDGE 1000typedef struct{ int v1;int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
Kruskal算法是一种构造图的最小生成树的方法。设G为一无向连通图,令T是由G的顶点构成的于图,Kmskal算法的基本思想是为T添加适当的边使之成为最小生成树:初始时,T中的点互相不连通;考察G的边集E中的每条边,若它的两个顶点在T中不连通,则将此边添加到T中,同时合并其两顶点所在的连通分量,如此下去,当添加了n-1条边时,T的连通分量个数为1,T便是G的一棵最小生成树。下面的函数void Kruskal(EdgeType edges[],int n)利用Kruskal算法,构造了有n个顶点的图 edges的最小生成树。其中数组father[]用于记录T中顶点的连通性质:其初值为father[i]=-1 (i=0,1,…,n-1),表示各个顶点在不同的连通分量上;若有father[i]=j,j>-1,则顶点i,j连通;函数int Find(int father[],int v)用于返回顶点v所在树形连通分支的根结点。[函数]define MAXEDGE 1000typedef struct{ int v1;int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
下面的函数void Kruskal(EdgeType edges[],int n)利用Kruskal算法,构造了有n个顶点的图 edges的最小生成树。其中数组father[]用于记录T中顶点的连通性质:其初值为father[i]=-1 (i=0,1,…,n-1),表示各个顶点在不同的连通分量上;若有father[i]=j,j>-1,则顶点i,j连通;函数int Find(int father[],int v)用于返回顶点v所在树形连通分支的根结点。[函数]define MAXEDGE 1000typedef struct{ int v1;int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
[函数]define MAXEDGE 1000typedef struct{ int v1;int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
define MAXEDGE 1000typedef struct{ int v1;int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
typedef struct{ int v1;int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
{ int v1;int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
int v2;}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
}EdgeType;void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
void Kruskal(EdgeType edges[],int n){ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
{ int father[MAXEDGE];int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
int i,j,vf1,vt2;for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
for(i=0;i<n;i+ +) father[i]=-1;i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
i=0;j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
j=0;while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
while(i<MAXEDGE && j<(1)){ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
{ vf1=Find(father,edges[i].v1);vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
vf2=Find(father,edges[i].v2);if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
if((2)){(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
{(3)=vf1;(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
(4);printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
printf("%3d%3d\n",edges[i].v1,edges[i].v2);}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
}(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
(5);}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
}}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
}int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
int Find(int father[],int v){ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
{ int t;t=v;while(father[t]>=0) t=father[t];return(t);}
t=v;while(father[t]>=0) t=father[t];return(t);}
while(father[t]>=0) t=father[t];return(t);}
return(t);}
}
点击查看答案