PASCAL语言

设T是一棵有n个顶点的树,下列说法不正确的是()A、T有n条边B、T是连通的C、T是无环的D、T有n-1条边

题目

设T是一棵有n个顶点的树,下列说法不正确的是()

  • A、T有n条边
  • B、T是连通的
  • C、T是无环的
  • D、T有n-1条边
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

阅读下列函数说明和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 1000

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);

}


正确答案:(1) n-1 (2) vf1! =vf2 (3) father[vf2] (4) j++ (5) i++
(1) n-1 (2) vf1! =vf2 (3) father[vf2] (4) j++ (5) i++ 解析:(1)由上下文可知,变量j记录了添加进最小生成树的边数,当j超出n-1时循环终止,构造过程结束;
(2)此处的判别条件应该是:v1和V2连通。由于Vf1和 vf2分别是边edges[i]两顶点v1、v2所在连通分支的根,v1和v2连通当且仅当vf1和vf2相等;
(3)~(4)根据程序说明,当v1和v2不连通时,需添加 edges[i]进最小生成树且合并v1和v2所在连通分支。后者就是令j自增1;后者即连接vf1和vf2。
(5)对图中的边循环,继续考虑下一条边。

第2题:

连通图G有n个点,其部分树为T,则有()。

A、T有n个点n条边

B、T的长度等于G的每条边的长度之和

C、T有n个点n+1条边

D、T有n-1个点n条边


参考答案:C

第3题:

下列说法中不正确的有________。

A、n个顶点的无向连通图的边数为 n(n-1)

B、图的广度优先遍历过程是一个递归过程

C、n个顶点的有向完全图的弧数为 n(n-1)

D、有向图的强连通分量是有向图的极大强连通子图


正确答案:AB

第4题:

n个顶点的强连通图中至少含有(14)。

A.n-1条的向边

B.n条有向边

C.n(n-1)/2条有向边

D.n(n-1)条有向边


正确答案:B
解析:n个顶点的强连通图中边最少的情况是,从一个顶点开始顺序连接各点,最后回到该点,它们整体上恰好构成一个圆环。此时有n条有向边。

第5题:

有n个顶点和n-1条边的无向图一定是生成树。()

此题为判断题(对,错)。


参考答案:错误

第6题:

图的生成树是不唯一的,一个连通图的生成树是一个最小连通子图,n个顶点的生成树有n-1条边,最小代价生成树是唯一的。( )

此题为判断题(对,错)。


正确答案:正确

第7题:

n个顶点的连通图的生成树有()条边。

A.n

B.n-1

C.n+1

D.不确定


参考答案:B

第8题:

具有 n个节点的树 T 的边恰好是( )条。

A. n-3

B. n-2

C. n-1

D. n


参考答案:C

第9题:

一棵有n个顶点的生成树有且仅有n-1条边。()

此题为判断题(对,错)。


参考答案:正确

第10题:

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。

【说明】 应用Prim算法求解连通网络的最小生成树问题。请阅读程序后填空。

const int MaxInt=INT MAX; //INT MAX的值在<limits.h>中

const int n=6; //图的顶点数,应由用户定义

typedef int AdjMatrix[n][n]; //用二维数组作为邻接矩阵表示

typedef struct{ //生成树的边结点

int fromVex,to Vex; //边的起点与终点

int weight; //边上的权值

}TreeEdSenode;

typedef TreeEdgeNode MST[n-1]; //最小生成树定义

void PrimMST (AdjMatrix G,MST T,int rt){

//从顶点rt出发构造图G的最小生成树T,rt成为树的根结点

TreeEdgeNode e; int i,k=0,min,minpos,v;

for(i=0;i<n;i++) //初始化最小生成树T

if(i!=rt){

T[k].fromVex=rt;

(1);

T[k++].weight=G[rt][i];

}

for(k=0;k<n-1;k++){ //依次求MST的候选边

(2);

for(i=k;i<n-1;i++) 八遍历当前候选边集合

if(T[i].weight<min) //选具有最小权值的候选边

{min=T[i].weight;(3);}

if(min==MaxInt) //图不连通,出错处理

{cerr<<“Graph is disconnected!”<<endl; exit(1);}

e=T[minpos];T[minpos]=T[k];(4);

v=T[k].to Vex;

for(i=k+1;i<n-1;i++) //修改候选边集合

if(G[v][T[i].to Vex]<T[i].weight){

T[i].weight=G[v][T[i].toVex];

(5);

}

}

}


正确答案:(1)T[k].toVex=I (2)min=MaxInt (3)minpos=i (4)T[k]=e; (5)T[i].fromVex=v
(1)T[k].toVex=I (2)min=MaxInt (3)minpos=i (4)T[k]=e; (5)T[i].fromVex=v 解析:(1)T[k].toVex=i
树n边的入度点。
(2)min=MaxInt
最小值变量初始化。
(3)minpos=i
最小值结点的位置。
(4)T[k]=e;
T[minpos]与T[k]交换。
(5)T[i].fromVex=v
候选边的出度点。