南工大第四章图_第1页
南工大第四章图_第2页
南工大第四章图_第3页
南工大第四章图_第4页
南工大第四章图_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

**数据结构与算法上机作业第四章图**一、选择题1、在一个无向图中,所有顶点的度数之和等于所有边数的C倍。A.1/2B.1C.2D.42、在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的B倍。A.1/2B.1C.2D.43、G是一个非连通无向图,共有28条边,则该图至少有D个顶点。A.6B.7C.8D.94、有n个顶点的图的邻接矩阵使用B数组存储的。A.一维B.n行n列C.任意行n列D.n行任意列5、对于一个具有n个顶点和e条边的无向图,采用邻接表表示,则表头数组大小至少为(假感谢阅读设下标为0的数组参与使用) A 。A.n-1 B.n+1 C.n D.n+e6、下列说法正确的是 C 。有向图的邻接矩阵一定是不对称的有向图的邻接矩阵一定是对称的无向图的邻接矩阵一定是对称的无向图的邻接矩阵可以不对称7、深度优先遍历类似与二叉树的 A :A.先根遍历 B.中根遍历 C.后根遍历 D.层次遍历谢谢阅读8、广度优先遍历类似与二叉树的 D :A.先根遍历 B.中根遍历 C.后根遍历 D.层次遍历谢谢阅读9、下列关于开放树(FreeTree)的说法错误的是 C :感谢阅读**具有n个结点的开放树包含n-1条边开放树没有回路开放树可以是非连通图在开放树中任意加一条边,一定会产生回路10、在如下图所示的图中,从顶点a出发,按深度优先遍历,则可能得到的一种顶点的序谢谢阅读列为 。A.a,b,e,c,d,fC.a,e,b,c,f,d

B.a,c,f,e,b,dD.a,e,d,f,c,b11、在如上图所示的图中,从顶点a出发,按广度优先遍历,则可能得到的一种顶点的序谢谢阅读列为 。A.a,b,e,c,d,f B.a,b,e,c,f,d精品文档放心下载C.a,e,b,c,f,d D.a,e,d,f,c,b感谢阅读12、设网(带权的图)有n个顶点和e条边,则采用邻接表存储时,求最小生成树的Prim算感谢阅读法的时间复杂度为 C 。A.O(n) B.O(n+e) C.O(n2) D.O(n3)感谢阅读13、设图有n个顶点和e条边,求解最短路径的Floyd算法的时间复杂度为 O 。精品文档放心下载A.O(n) B.O(n+e) C.O(n2) D.O(n3)感谢阅读14、最小生成树是指 C 。**由连通网所得到的边数最少的生成树。由连通网所得到的顶点数相对较少的生成树。连通网中所有生成树中权值之和为最小的生成树。连通网的极小连通子图。15、下面关于工程计划的AOE网的叙述中,不正确的是 B 。感谢阅读关键活动不按期完成就会影响整个工程的完成时间。任何一个关键活动提前完成,那么整个工程将会提前完成。精品文档放心下载所有关键活动都提前完成,那么整个工程将会提前完成。某些关键工程若提前完成,那么整个工程将会提前完成。16、在AOE网中,始点和汇点的个数为 C 。A.1个始点,若干个汇点 B.若干个始点,若干个汇点感谢阅读C.若干个始点,1个汇点 C.1个始点,1个汇点感谢阅读17、在下图所示的无向图中,从顶点v1开始采用Prim算法生成最小生成树,算法过程中感谢阅读产生的顶点次序为 B 。A.v1,v3,v4,v2,v5,v6 B.v1,v3,v6,v2,v5,v4谢谢阅读C.v1,v2,v3,v4,v5,v6 D.v1,v3,v6,v4,v2,v5谢谢阅读18、在上图所示的途中,采用Cruskal算法生成最小生成树,过程中产生的边的次序是谢谢阅读C。A.(v1,v2),(v2,v3),(v5,v6),(v1,v5) B.(v1,v3),(v2,v6),(v2,v5),(v1,v4)谢谢阅读**C.(v1,v3),(v2,v5),(v3,v6),(v4,v5) D.(v2,v5),(v1,v3),(v5,v6),(v4,v5)谢谢阅读19、如下图所示的图中,其中一个拓扑排序的结果是 A 。感谢阅读v1→v2→v3→v6→v4→v5→v7→v8v1→v2→v3→v4→v5→v6→v7→v8v1→v6→v4→v5→v2→v3→v7→v8v1→v6→v2→v3→v7→v8→v4→v520、在下图所示的AOE网中,活动a9的最早开始时间为精品文档放心下载

B

。A.13 B.14 C.15 D.1621、在上图所示的AOE网中,活动a4的最迟开始时间为 D精品文档放心下载A.2 B.3 C.4 D.522、设图有n个顶点和e条边,当用邻接表表示该图时,则求解最短路径的Dijkstra算法感谢阅读的时间复杂度为 O 。A.O(n) B.O(n+e)

C.O(e)

D.O(n2)**二、填空题1、若无向图G中顶点数为n,则图G至多有n(n-1)/2条边;若G为有向图,则图G至多有n(n-1)条边。2、图的存储结构主要有两种,分别是邻接表和邻接矩阵。3、若G是有向图,则把邻接到顶点v的顶点数目或边数目称为顶点v的入度;把邻接于顶点v的顶点数目或边数目称为顶点v的出度。4、已知一个图的邻接矩阵表示,计算第j个顶点的入度的方法是 第j行非0元素的个感谢阅读数,计算第j个顶点的出度的方法是第j列非0元素的个数。5、若将图中的每条边都赋予一个权,则称这种带权的图为网络。6、无论是有向图还是无向图,顶点数n、边数e和各顶点的度D(vi)之间的关系为:。7、若路径上第一个顶点v1与最后一个顶点vm重合,则称这样的简单路径为回路或环。8、如果图中任意一对顶点都是连通的,则称此图是连通图;非连通图的极大连通子图叫做连通分量。9、创建一个邻接矩阵图的复杂度是O(n*n);创建一个链接表图的复杂度是O(n+e)。10、图的遍历有深度优先遍历和广度优先遍历等方法。**11、在深度优先搜索和广度优先搜索中,都采用visited[i]=0(false)的方式设置第i个顶点为new,而采用visited[i]=1(true)的方式标识第i个结点为old。12、由于深度优先算法的特点,深度优先往往采用递归的方式实现。谢谢阅读13、由于广度优先算法的特点,在广度优先实现过程中,往往要借助于另一种数据结构感谢阅读队列 实现。14、在深度优先搜索和广度优先搜索中,在搜索过程中所经过的边都称为 搜索感谢阅读边 。15、连通而且无环路的无向图称为 开放数 。16、对于含有n个顶点e条边的连通图,利用Prim算法求其最小生成树的时间复杂度为谢谢阅读O(n*n),利用Kruscal算法求最小生成树的时间复杂度是O(e*lge)。3、顶点表示活动的网简称为AOV;边表示活动的网简称为AOE。精品文档放心下载17、一个含有n个顶点的无向连通图,其每条边的权重都是a(a>0),则其最小生成树的权谢谢阅读重等于 (n-1)*a 。18、具有n个顶点的有向图,如果采用邻接矩阵表示该图,则求某顶点到其他各顶点的最谢谢阅读短路径的Dijkstra算法的时间复杂度是O(n*n);如果采用邻接表表示该图,则时间复杂度为O(e)。谢谢阅读19、在用Dijkstra算法求单源最短路径的过程中,将顶点集合V划分为两个集合S和V-S,谢谢阅读其中S中的点为最短路径已确定的顶点集合,V-S中的点为最短路径未确定的顶点集合。精品文档放心下载、求每一对顶点之间的最短路径,可以用两种方法,一种是分别对每个顶点采用谢谢阅读算法,另一种方法是。**21、假设有向图的邻接矩阵C的传递闭包为A,则A[i][j]=1表示 。谢谢阅读22、有向图的中心点是指 具有最小偏心度的顶点 。三、已知一个无向图如下图所示,试给出该图的邻接矩阵和邻接表存储示意图(画图,分别谢谢阅读用矩阵和数组链表图表示),并编程分别实现该图的邻接矩阵表示和邻接表表示,要求编写感谢阅读两种表示方法的存储结构、相关基本操作,并在主函数中创建该图。感谢阅读代码:#include<iostream>usingnamespacestd;#definemax_vexNum26 //最大顶点个数精品文档放心下载typedefstruct{intvex_num,arc_num; //顶点数,边数精品文档放心下载intcount; //记录当前顶点数charvexs[max_vexNum]; //顶点向量感谢阅读doublearcs[max_vexNum][max_vexNum]; //邻接矩阵感谢阅读}Graph;**//添加一个新的顶点charNewNode(Graph*G,charv){感谢阅读G->vexs[G->count]=v;G->count++;returnv;}//寻找某个顶点的位置intFindPosition(Graph*G,charv){谢谢阅读for(inti=0;i<G->count;i++){精品文档放心下载if(v==G->vexs[i])returni;}}voidDelete(Graph*G,charv){精品文档放心下载//先删除点inti,j;**inttemp_count= G->count;i=FindPosition(G,v);for(j=i;j<temp_count;j++)G->vexs[j]=G->vexs[j+1];G->count--;// 删除边//先删除行intp=i;//记住位置for(i=p;i<temp_count-1;i++)精品文档放心下载for(j=0;j<temp_count;j++)G->arcs[i][j]=G->arcs[i+1][j];精品文档放心下载//再删除列for(i=p;i<temp_count-1;i++)感谢阅读for(j=0;j<temp_count;j++)G->arcs[j][i]=G->arcs[j][i+1];感谢阅读}**//建立v1与v2的一条边voidSetSoucc(Graph*G,charv1,charv2){谢谢阅读//先找到对应的定的位置inti,j;inttemp_count=G->count;i=FindPosition(G,v1);j=FindPosition(G,v2);if(i==temp_count||j==temp_count)//没有找到感谢阅读return;//找到后,A[i][j]=0;vexs[j][i]=0;感谢阅读G->arcs[i][j]=1;G->arcs[j][i]=1;}voidDelSucc(Graph*G,charv1,charv2){精品文档放心下载inti,j;inttemp_count=G->count;i=FindPosition(G,v1);**j=FindPosition(G,v2);if(i==temp_count||j==temp_count)//没有找到感谢阅读return;//找到后,A[i][j]=0;vexs[j][i]=0;感谢阅读G->arcs[i][j]=0;G->arcs[j][i]=0;}//判断v1y与v2是否连接boolisEdge(Graph*G,charv1,charv2){精品文档放心下载inti,j;inttemp_count=G->count;i=FindPosition(G,v1);j=FindPosition(G,v2);if(i==temp_count||j==temp_count)//没有找到精品文档放心下载return-1;**if(G->arcs[i][j]==1)returntrue;returnfalse;}voidPrint(Graph*G){inti,j;for(i=0;i<G->count;i++){for(j=0;j<G->count;j++)cout<<G->arcs[i][j]<<"";cout<<endl;}cout<<endl;}Graph*G=newGraph;//初始化intmain(){G->count=0;**NewNode(G,'A');NewNode(G,'B');NewNode(G,'C');NewNode(G,'D');//插入边SetSoucc(G,'A','B');SetSoucc(G,'A','D');SetSoucc(G,'C','B');Print(G);//删除一个顶点Delete(G,'C');Print(G);//删除边DelSucc(G,'A','D');Print(G);if(isEdge(G,'A','B'))cout<<"A与B右边"<<endl;**return0;}四、已知一个有向图如下图所示,试给出图的邻接矩阵和邻接表存储示意图(画图,分别用谢谢阅读矩阵和数组链表图表示),并编程分别实现该图的邻接矩阵表示和邻接表表示,要求编写两谢谢阅读种表示方法的存储结构、相关基本操作,并在主函数中创建该图。精品文档放心下载代码:#include<iostream>#include<stdio.h>#include<stdlib.h>usingnamespacestd;#define max_n 20structArcNode{charadjvex='#';ArcNode*next=NULL;};**typedefstructVNode{chardata;ArcNode *first_head;}VNode,AdjList[max_n];typedefstruct{AdjList vertices;int vexnum,arcnum;intcount=0;}Graph;//新增一个顶点charNewNode(Graph*G,charv){感谢阅读G->vertices[G->count].data=v;感谢阅读G->vertices[G->count].first_head=newArcNode;精品文档放心下载G->count++;returnv;}//寻找某个顶点的位置**intFindPosition(Graph*G,charv){精品文档放心下载for(inti=0;i<G->count;i++){谢谢阅读if(v==G->vertices[i].data)感谢阅读returni;}}//删除一个顶点voidDelNode(Graph*G,charv){感谢阅读inti=FindPosition(G,v);//去头ArcNode*p=G->vertices[i].first_head;感谢阅读//现在vertices中删除intj;for(j=i;j<G->count-1;j++)G->vertices[j]=G->vertices[j+1];精品文档放心下载G->vertices[j].data='#';G->vertices[j].first_head=NULL;感谢阅读G->count--;**//删除边ArcNode*q;while(p!=NULL){q=p;p=p->next;q=NULL;}}//设置v1到v2直接的一条边voidSetSucc(Graph*G,charv1,char v2){谢谢阅读inti=FindPosition(G,v1);ArcNode*p;p=G->vertices[i].first_head;精品文档放心下载while(p->next!=NULL){p=p->next;**}ArcNode*q=newArcNode;q->adjvex=v2;p->next=q;}ArcNode*FindNode(ArcNode*p,charv2){精品文档放心下载for(;p;p=p->next){if(p->next->adjvex==v2)break;}returnp;}voidDetele(Graph*G,charv1,char v2){感谢阅读inti=FindPosition(G,v1);**ArcNode*p;//没有找到if(i==-1)return;p=FindNode(G->vertices[i].first_head,v2);感谢阅读//因为p是上一个节点的位置,用q来保存//要删除的节点的地址ArcNode*q=p->next;//通过将上一个节点的next指针指向要删除节点的next指谢谢阅读//针志向的节点实现断开要删除节点的目的// p->adjvex=p->next->adjvex;谢谢阅读p->next=p->next->next;//删除要删除的节点qdeleteq;}//输出领接表**voidPrint(Graph*G){ArcNode*p;for(inti=0;i<G->count;i++){精品文档放心下载//先将datacout<<G->vertices[i].data<<"->";感谢阅读//从每个顶点的头结点开始遍历if(G->vertices[i].first_head->next!=NULL){谢谢阅读p=G->vertices[i].first_head->next;感谢阅读while(p!=NULL){cout<<p->adjvex<<"->";p=p->next;}}cout<<endl;}cout<<endl;}**Graph*G=newGraph;intmain(){NewNode(G,'A');NewNode(G,'B');NewNode(G,'C');NewNode(G,'D');Print(G);SetSucc(G,'A','D');SetSucc(G,'A','B');SetSucc(G,'A','C');SetSucc(G,'B','C');SetSucc(G,'C','D');SetSucc(G,'D','B');Print(G);Detele(G,'A','C');**Detele(G,'D','B');Print(G);SetSucc(G,'D','C');Print(G);return0;}五、已知一个图的顶点集为{a,b,c,d,e},其邻接矩阵如下图,考虑图为无向图和有向图两精品文档放心下载种情况,分别画出该图。六、已知一个连通图如下图所示,分别给出一个按深度优先遍历和广度优先遍历的顶点序列精品文档放心下载(假设从顶点v1出发)。并编程分别实现该图的邻接矩阵表示和邻接表表示,要求编写相谢谢阅读关基本操作,并在主函数中求出深度优先序列和广度优先序列。感谢阅读代码:#include<iostream>#include<stdio.h>**#include<stdlib.h>#include<queue>usingnamespacestd;#define max_n 20structArcNode{charadjvex='#';ArcNode*next=NULL;};typedefstructVNode{chardata;ArcNode *first_head;}VNode,AdjList[max_n];typedefstruct{AdjList vertices;int visit[max_n]={0};//记录是否被访问过精品文档放心下载int vexnum,arcnum;intcount=0;**}Graph;//新增一个顶点charNewNode(Graph*G,charv){精品文档放心下载G->vertices[G->count].data=v;谢谢阅读G->vertices[G->count].first_head=newArcNode;谢谢阅读G->count++;returnv;}//寻找某个顶点的位置intFindPosition(Graph*G,charv){精品文档放心下载for(inti=0;i<G->count;i++){精品文档放心下载if(v==G->vertices[i].data)谢谢阅读returni;}}//删除一个顶点voidDelNode(Graph*G,charv){感谢阅读inti=FindPosition(G,v);**//去头ArcNode*p=G->vertices[i].first_head;感谢阅读//现在vertices中删除intj;for(j=i;j<G->count-1;j++)感谢阅读G->vertices[j]=G->vertices[j+1];谢谢阅读G->vertices[j].data='#';G->vertices[j].first_head=NULL;谢谢阅读G->count--;//删除边ArcNode*q;while(p!=NULL){q=p;p=p->next;q=NULL;}}**//设置v1到v2直接的一条边voidSetSucc(Graph*G,charv1,char v2){感谢阅读inti=FindPosition(G,v1);ArcNode*p;p=G->vertices[i].first_head;精品文档放心下载while(p->next!=NULL){p=p->next;}ArcNode*q=newArcNode;q->adjvex=v2;p->next=q;}//对于无向图**voidSetSucc1(Graph*G,charv1,char v2){谢谢阅读SetSucc(G,v1,v2);SetSucc(G,v2,v1);}ArcNode*FindNode(ArcNode*p,charv2){谢谢阅读for(;p;p=p->next){if(p->next->adjvex==v2)break;}returnp;}voidDetele(Graph*G,charv1,char v2){精品文档放心下载inti=FindPosition(G,v1);ArcNode*p;//没有找到if(i==-1)return;**p=FindNode(G->vertices[i].first_head,v2);谢谢阅读//因为p是上一个节点的位置,用q来保存//要删除的节点的地址ArcNode*q=p->next;//通过将上一个节点的next指针指向要删除节点的next指感谢阅读//针志向的节点实现断开要删除节点的目的// p->adjvex=p->next->adjvex;谢谢阅读p->next=p->next->next;//删除要删除的节点qdeleteq;}//输出领接表voidPrint(Graph*G){ArcNode*p;for(inti=0;i<G->count;i++){感谢阅读//先将data**cout<<G->vertices[i].data<<"->";感谢阅读//从每个顶点的头结点开始遍历if(G->vertices[i].first_head->next!=NULL){感谢阅读p=G->vertices[i].first_head->next;谢谢阅读while(p!=NULL){cout<<p->adjvex<<"->";p=p->next;}}cout<<endl;}cout<<endl;}voidmakeVisitNull(Graph*G){精品文档放心下载for(inti=0;i<max_n;i++)G->visit[i]=0;**}voidDfs_part(Graph*G,inti){精品文档放心下载ArcNode*p=G->vertices[i].first_head->next;精品文档放心下载for(;p;p=p->next){inti=FindPosition(G,p->adjvex);精品文档放心下载if(!G->visit[i]){G->visit[i]=1;cout<<p->adjvex<<"->";Dfs_part(G,i);}}}//深度优先遍历void DFS(Graph*G,inti){精品文档放心下载cout<<G->vertices[i].data<<"->";精品文档放心下载G->visit[i]=1;Dfs_part(G,i);**//恢复makeVisitNull(G);cout<<endl;}queue<int>qList;voidBfs_part(Graph*G){感谢阅读intt= qList.front();cout<<G->vertices[t].data<<"->";精品文档放心下载qList.pop();ArcNode*p=G->vertices[t].first_head->next;精品文档放心下载for(;p;p=p->next){inti=FindPosition(G,p->adjvex);谢谢阅读if(!G->visit[i]){G->visit[i]=1;qList.push(i);**}}if(!qList.empty())Bfs_part(G);}//void BFS(Graph*G,inti){感谢阅读G->visit[i]=1;qList.push(i);Bfs_part(G);//恢复makeVisitNull(G);cout<<endl;}Graph*G=newGraph;intmain(){**NewNode(G,'1');NewNode(G,'2');NewNode(G,'3');NewNode(G,'4');NewNode(G,'5');NewNode(G,'6');Print(G);SetSucc1(G,'1','2');SetSucc1(G,'1','4');SetSucc1(G,'1','6');SetSucc1(G,'2','3');SetSucc1(G,'2','4');SetSucc1(G,'2','5');SetSucc1(G,'3','5');SetSucc1(G,'4','6');SetSucc1(G,'4','5');**Print(G);cout<<"DFS:"<<endl;DFS(G,0);cout<<"BFS:"<<endl;BFS(G,0);return0;}七、基于深度优先搜索算法,写出求无向图所有连通子图的算法,并求连通分量。精品文档放心下载提示:对于无向图,从任一个顶点出发进行DFS遍历,当本次遍历完成后,其所访问的结谢谢阅读点构成一个连通子图;如果还存在没有访问过的结点,则从中任一个结点出发进行DFS遍谢谢阅读历,……,直到所有结点都被访问。每一次调用DFS后都得到此非连通图的一个连通子图,谢谢阅读调用DFS的次数就是连通子图的个数。八、网络G的邻接矩阵如下,试画出该图,并画出它的一棵最小生成树。感谢阅读解:九、下图是一个无向带权图,请给出该图的邻接矩阵,并分别按Prim算法和Kruskal算法感谢阅读**求最小生成树(包括算法代码和画图)。十、代码:#include<iostream>#include<vector>#include<queue>#include<algorithm>usingnamespacestd;#defineINFINITE0xFFFFFFFF谢谢阅读#defineVertexDataunsignedint //顶点数据感谢阅读#defineUINT unsignedint#definevexCounts6 //顶点数量感谢阅读charvextex[]={'A','B','C','D','E','F'};感谢阅读structnode{VertexDatadata;unsignedintlowestcost;}closedge[vexCounts];//Prim算法中的辅助信息谢谢阅读typedefstruct{VertexDatau;**VertexDatav;unsignedintcost; //边的代价}Arc;//原始图的边信息voidAdjMatrix(unsignedintadjMat[][vexCounts]){//邻接矩阵表示法谢谢阅读for(inti=0;i<vexCounts;i++) //初始化邻接矩阵精品文档放心下载for(intj=0;j<vexCounts;j++){感谢阅读adjMat[i][j]=INFINITE;}}intMinmum(structnode*closedge){//返回最小代价边谢谢阅读unsignedintmin=INFINITE;谢谢阅读intindex=-1;for(inti=0;i<vexCounts;i++){谢谢阅读if(closedge[i].lowestcost<min&&closedge[i].lowestcost!=0){谢谢阅读min=closedge[i].lowestcost;精品文档放心下载index=i;}}returnindex;}voidMiniSpanTree_Prim(unsignedintadjMat[][vexCounts],VertexDatas){感谢阅读**for(inti=0;i<vexCounts;i++){精品文档放心下载closedge[i].lowestcost=INFINITE;精品文档放心下载}closedge[s].data=s; //从顶点s开始精品文档放心下载closedge[s].lowestcost=0;谢谢阅读for(inti=0;i<vexCounts;i++){//初始化辅助数组精品文档放心下载if(i!=s){closedge[i].data=s;closedge[i].lowestcost=adjMat[s][i];精品文档放心下载}}for(inte=1;e<=vexCounts-1;e++){//n-1条边时退出谢谢阅读intk=Minmum(closedge); //选择最小代价边感谢阅读cout<<vextex[closedge[k].data]<<"--"<<vextex[k]<<endl;//加入到最谢谢阅读小生成树closedge[k].lowestcost=0;//代价置为0精品文档放心下载for(inti=0;i<vexCounts;i++){//更新v中顶点最小代价边信息谢谢阅读if(adjMat[k][i]<closedge[i].lowestcost){精品文档放心下载closedge[i].data=k;closedge[i].lowestcost=adjMat[k][i];谢谢阅读}}**}}voidReadArc(unsignedint adjMat[][vexCounts],vector<Arc>&vertexArc){//保存谢谢阅读图的边代价信息Arc*temp=NULL;for(unsignedinti=0;i<vexCounts;i++){谢谢阅读for(unsignedintj=0;j<i;j++){谢谢阅读if(adjMat[i][j]!=INFINITE){谢谢阅读temp=newArc;temp->u=i;temp->v=j;temp->cost=adjMat[i][j];精品文档放心下载vertexArc.push_back(*temp);谢谢阅读}}}}boolcompare(Arc A,Arc B){谢谢阅读returnA.cost<B.cost?true:false;感谢阅读}boolFindTree(VertexDatau,VertexDatav,vector<vector<VertexData>>&Tree){感谢阅读unsignedintindex_u=INFINITE;感谢阅读**unsignedintindex_v=INFINITE;精品文档放心下载for(unsignedinti=0;i<Tree.size();i++){//检查u,v分别属于哪颗树感谢阅读if(find(Tree[i].begin(),Tree[i].end(),u)!=Tree[i].end())谢谢阅读index_u=i;if(find(Tree[i].begin(),Tree[i].end(),v)!=Tree[i].end())精品文档放心下载index_v=i;}if(index_u!=index_v){//u,v不在一颗树上,合并两颗树谢谢阅读for(unsignedinti=0;i<Tree[index_v].size();i++){谢谢阅读Tree[index_u].push_back(Tree[index_v][i]);感谢阅读}Tree[index_v].cle

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论