数据结构---图(求关节点)
来源:互联网 发布:绝对领域 知乎 编辑:程序博客网 时间:2024/04/19 06:17
// Find Articulation Point.cpp : Defines the entry point for the console application./*-----CODE FOR FUN----------------------CREATED BY Dream_Whui-------------2015-2-13--------------------*/#include "stdafx.h"#include "graph.h"int COUNT;int low[MAX_VERTEX_NUM];void DFSArticul(ALGraph G, int v0)//从第v0个顶点出发深度优先遍历图G,查找并输出 关节点{ int w,min; visited[v0] = min = ++COUNT;//v0是第count个访问的顶点 ArcNode *p; for(p=G.vertices[v0].firstarc; p!=NULL; p=p->nextarc)//对v0的每个邻接顶点检查 { w = p->adjvex; //w为V0的邻接顶点 if(visited[w] == 0) //w未曾访问,是v0的孩子 { DFSArticul(G,w);//返回前求得low[w] if(low[w] < min) min = low[w]; if(low[w] >= visited[v0]) cout<<v0<<" "<<G.vertices[v0].data<<endl; } else if(visited[w] < min)//w已访问,w是v0在生成树上的祖先 min = visited[w]; } low[v0] = min; cout<<G.vertices[v0].data<<" "<<min<<endl;}void FindArticul(ALGraph G)//连通图G以邻接表作存储结构,查找并输出G上的全部关节点,全局量count{ int i,v; COUNT = 1; //设定邻接表上0号顶点为生成树的根 visited[0] = 1; //其余顶点尚未访问 for(i=1; i<G.vexnum; i++) visited[i] = 0; ArcNode *p; p = G.vertices[0].firstarc; v = p->adjvex; DFSArticul(G,v); //从第v个顶点出发深度优先查找关节点 if(COUNT < G.vexnum) //生成树的根有至少两颗子树 { cout<<0<<" "<<G.vertices[0].data<<endl;//根是关节点,输出 while(p->nextarc) { p = p->nextarc; v = p->adjvex; if(visited[v] == 0) DFSArticul(G,v); } }}int main(int argc, char* argv[]){ ALGraph G; CreateGraph(G); Display(G); FindArticul(G); return 0;}
0 0
- 数据结构---图(求关节点)
- 数据结构_图_求无向图的关节点
- 数据结构——求邻接矩阵表示的图的关节点
- 【数据结构】算法7.10-7.11 DFS求无向图关节点
- poj 1523 SPF(无向图求关节点)
- 求连通图的割点(关节点)问题
- 求连通图的关节点(割点)--C语言
- 求无向图的关节点算法
- C++代码,数据结构-连通图的关节点
- 看数据结构写代码(43) 关节点
- 网易有道笔试:求连通图的割点(关节点)
- 数据结构之图的关节点和重连通分量
- 数据结构之无向图邻接表DFS之查询遍历关节点(参考整理严蔚敏数据结构)
- poj(1523)关节点
- 关节点(割点)
- 关节点
- Tarjan 求无向图中的 关节点,和重连通分量
- 无向图的割点(关节点)
- 我的maven项目常用配置
- 【学习心得】linux下多客户端批量操作脚本(含expect交互)
- 数据结构---图(邻接表)
- 显示缓存内容
- enum和int的相互转换
- 数据结构---图(求关节点)
- matlab新手入门篇
- SRTM DEM 下载网址
- 另类case when
- 剪格子
- Math类常用的常量和方法
- curl命令的安装
- 有用的网址
- docker详细的基础用法