博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图的割点(简易邻接矩阵)C~
阅读量:4217 次
发布时间:2019-05-26

本文共 1359 字,大约阅读时间需要 4 分钟。

时间戳:记录某个顶点在遍历时候是第几个被访问的。

这里用数组num[]记录时间戳.

用数组low[]记录每个顶点在不经过父顶点时,能够会到的最小时间戳.

割点条件

(1)当前顶点不是根节点,并且满足low[i]  >= cur[cur] 则当前顶点为割点。

(2)当前顶点是根节点,并且在生成树中有两个儿子,那么这个根节点是割点。

完整实现:

#include
#define MAXVEX 10 #define INF 65535int n, m, e[MAXVEX][MAXVEX];int num[9], low[9];//这里不需要初始化 num[]数组的原因是 它是全局的 默认初始为0int index; //进行时间戳的递增int flag[MAXVEX];int root, child;int min(int a, int b) { return a < b ? a : b; }//割点算法核心void dfs(int cur, int father) { int i; child = 0; index++; num[cur] = index;//当前顶点时间戳 low[cur] = index;//开始时能够访问到的最早的时间戳是自己 for(i = 1; i <= n; i++){ if(e[cur][i] == 1){ if(num[i] == 0){ //没有被访问过 child++;//从生成树的角度来说,此时i为 cur的儿子 dfs(i, cur);//继续往下遍历 low[cur] = min(low[cur], low[i]); if(cur != root && low[i] >= num[cur])//根据条件(1)判断 flag[cur] = 1; if(cur == root && child == 2)//根据条件(2)判断 flag[cur] = 1; } else if(num[i] != 0 && i != father){ low[cur] = min(low[cur], num[i]); } } } } int main() { int i, j, x, y; scanf("%d%d",&m,&n); for(i = 1; i <= n; i++ ){ for(j = 1; j <= n; j++){ if(i == j) e[i][j] = 0; else e[i][j] = INF; } } for(i = 1; i <= m; i++ ){ scanf("%d%d",&x,&y); e[x][y] = 1; e[y][x] = 1; } index = 0; root = 1; dfs(1, 1) ; for(i = 1; i <= n; i++ ){ if(flag[i] == 1) printf("cut_point = %d\n",i); } return 0; }

转载地址:http://mximi.baihongyu.com/

你可能感兴趣的文章
【ReactNative】真机上无法调试 could not connect to development server
查看>>
【XCode 4.6】常用快捷键 特别是格式化代码ctrl+i
查看>>
【iOS游戏开发】icon那点事 之 图标设计(三)
查看>>
【IOS游戏开发】之测试发布(Distribution)
查看>>
【IOS游戏开发】之IPA破解原理
查看>>
【一天一道LeetCode】#45. Jump Game II
查看>>
【一天一道LeetCode】#56. Merge Intervals
查看>>
【一天一道LeetCode】#58. Length of Last Word
查看>>
【一天一道LeetCode】#59. Spiral Matrix II
查看>>
【一天一道LeetCode】#30. Substring with Concatenation of All Words
查看>>
【一天一道LeetCode】#60. Permutation Sequence.
查看>>
【一天一道LeetCode】#118. Pascal's Triangle
查看>>
JAVA实现文件树
查看>>
ebay api GetMyMessages 函数
查看>>
手动12 - 安装php加速器 Zend OPcache
查看>>
set theme -yii2
查看>>
yii2 - controller
查看>>
yii2 - 增加actions
查看>>
php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)
查看>>
magento url中 uenc 一坨编码 base64
查看>>