6-19 Count Connected Components(20 point(s))
来源:互联网 发布:小说淘宝网免费阅读 编辑:程序博客网 时间:2024/05/29 04:19
6-19 Count Connected Components(20 point(s))
Write a function to count the number of connected components in a given graph.
Format of functions:
int CountConnectedComponents( LGraph Graph );
where LGraph
is defined as the following:
typedef struct AdjVNode *PtrToAdjVNode; struct AdjVNode{ Vertex AdjV; PtrToAdjVNode Next;};typedef struct Vnode{ PtrToAdjVNode FirstEdge;} AdjList[MaxVertexNum];typedef struct GNode *PtrToGNode;struct GNode{ int Nv; int Ne; AdjList G;};typedef PtrToGNode LGraph;
The function CountConnectedComponents
is supposed to return the number of connected components in the undirectedGraph
.
Sample program of judge:
#include <stdio.h>#include <stdlib.h>typedef enum {false, true} bool;#define MaxVertexNum 10 /* maximum number of vertices */typedef int Vertex; /* vertices are numbered from 0 to MaxVertexNum-1 */typedef struct AdjVNode *PtrToAdjVNode; struct AdjVNode{ Vertex AdjV; PtrToAdjVNode Next;};typedef struct Vnode{ PtrToAdjVNode FirstEdge;} AdjList[MaxVertexNum];typedef struct GNode *PtrToGNode;struct GNode{ int Nv; int Ne; AdjList G;};typedef PtrToGNode LGraph;LGraph ReadG(); /* details omitted */int CountConnectedComponents( LGraph Graph );int main(){ LGraph G = ReadG(); printf("%d\n", CountConnectedComponents(G)); return 0;}/* Your function will be put here */
Sample Input (for the graph shown in the figure):
8 60 70 12 04 12 43 5
Sample Output:
3code:
int CountConnectedComponents( LGraph Graph ){ int counts = 0;//统计连通分支的个数 int i,j; int vis[MaxVertexNum];//只标记这个点是否已经看过了 for(i = 0; i < MaxVertexNum; i++) vis[i] = 0;//标记数组的初始化 //用邻接表实现BFS for(i = 0; i < Graph->Nv; i++){ if(vis[i]==0){ counts++; vis[i] = 1; int q[MaxVertexNum]; int tail = 0,head = 0; q[tail++] = i;//创建一个队列,并把第一个顶点入队 PtrToAdjVNode t;//创建一个指针,用于遍历这个点的邻接表 while(head<tail){//广搜 t = Graph->G[q[head]].FirstEdge;//取出队首顶点的邻接表指针,实际上指向的是首顶点下一个连接的顶点 while(t){ if(!vis[t->AdjV]){//如果下一个连接的点没有遍历过 vis[t->AdjV] = 1;//标记 q[tail++] = t->AdjV;//入队 } t = t->Next;//下一个连接的顶点 } head++;//队首pop } } } return counts;}
阅读全文
0 0
- 6-19 Count Connected Components(20 point(s))
- Count Connected Components
- 4-19 Count Connected Components(DFS的栈实现+邻接表存图)
- Connected Components Labeling
- Strongly Connected Components
- 6-1 单链表逆转(20 point(s))
- 6-2 顺序表操作集(20 point(s))
- 6-5 链式表操作集(20 point(s))
- 6-9 求二叉树高度(20 point(s))
- 6-13 Percolate Up and Down(20 point(s))
- 6-14 Add Two Polynomials(20 point(s))
- CodeForces 292D Connected Components (并查集+YY)
- (组队赛E/F Number of Connected Components )UVALive
- Spark GraphX学习(一)Connected Components算法
- 6-7 Deque(25 point(s))
- Croc Round1 D Connected Components
- Codeforces 292D. Connected Components
- 4-1 Strongly Connected Components
- Vue.js学习笔记(一)
- 使用BeautifulSoup爬取“0dayin”网站的资源
- CentOS 6.6安装以mysql
- DLL导出函数示例
- leetcode: 13. Roman to Integer
- 6-19 Count Connected Components(20 point(s))
- 【Ionic2】Ionic2 踩坑记录
- springboot+Thymeleaf demo 每天进步百分之一
- 高企利润成诱人蛋糕,火热现金贷背后暗藏“暴利”风险
- Android 中ViewPager自适应图片高度的问题
- C++继承中关于子类构造函数
- 11.07 学习心得
- 注解 整理
- 20171107