算法如下:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MAX 10int AdjM[MAX][MAX];//全局变量void Warshell(int (*AdjMarix)[MAX],int n){//warshell算法求传递闭包
int i,j;
for(i=0;i<n;i++)for(j=0;j<n;j++)if(AdjMarix[i][j])AdjM[i][j]=1;elseAdjM[i][j]=0;     for(i=0;i<n;i++)for(j=0;j<n;j++)if(AdjM[j][i]==1){for(int k=0;k<n;k++){if(AdjM[i][k])AdjM[j][k]=1;}}for(i=0;i<n;i++)AdjM[i][i]=1;printf("可达矩阵为:\n");
for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%d  ",AdjM[i][j]);printf("\n");}
}int Q_judge(int (*AdjM)[MAX],int n){int i,j;
for(i=0;i<n;i++)for(j=i;j<n;j++)if(!(AdjM[i][j]*AdjM[j][i]))return 0;
printf("强连通\n");
return 1;
}int D_judge(int (*AdjM)[MAX],int n){int i,j;
for(i=0;i<n;i++)for(j=i;j<n;j++)if((AdjM[i][j]+AdjM[j][i])==0)return 0;
printf("单向连通\n");
return 1;
}int R_judge(int (*AdjM)[MAX],int n){int i,j;
for(i=0;i<n;i++)for(j=0;j<n;j++)if(AdjM[i][j])AdjM[j][i]=1;
Warshell(AdjM,n);
for(i=0;i<n;i++)for(j=i;j<n;j++)if((AdjM[i][j]*AdjM[j][i])==0)return 0;
printf("弱连通\n");
return 1;
}int main(){int n;
printf("请输入结点个数:");
scanf("%d",&n);
int AdjMarix[MAX][MAX];
printf("请输入邻接矩阵:\n");
for(int i=0;i<n;i++)for(int j=0;j<n;j++){scanf("%d",&AdjMarix[i][j]);AdjM[i][j]=AdjMarix[i][j];}
Warshell(AdjM,n);
if(Q_judge(AdjM,n));
else if(D_judge(AdjM,n));
else if(R_judge(AdjM,n));
else printf("不连通\n");
system("pause");
}

测试结果如下:

给定一个邻接矩阵,求可达矩阵及强连通、单向连通、弱连通、不连通的判断相关推荐

  1. 给定一个二维的 0-1 矩阵,其中 0 表示海洋,1 表示陆地。单独的或相邻的陆地可以形成岛屿,每个格子只与其上下左右四个格子相邻。求最大的岛屿面积。

    给定一个二维的 0-1 矩阵,其中 0 表示海洋,1 表示陆地.单独的或相邻的陆地可以形成岛屿,每个格子只与其上下左右四个格子相邻.求最大的岛屿面积. function func(arr) {/*** ...

  2. matlab可达矩阵 结果,matlab求可达矩阵

    matlab中可达矩阵的计算 2页 1下载券 邻接矩阵的可达矩阵及层... 2页 2下载券 邻接矩阵的一种计算方法 7页 免费 ISM算法(邻接矩阵求可达... 暂无...... JAVA矩阵算法代码 ...

  3. java 求最长重复子串_给定一个字符串,求出其最长的重复子串。

    #include #include #include #include using namespace std; //给定一个字符串,求出其最长的重复子串 //方法一 string lsubstr_1 ...

  4. 给定一个 n X n 的矩阵 和 R,求旋转 90 X R 度以后的矩阵

    1. 问题 [例题]循环输入,每组数据先输入一个 n(n<=10),然后 n 行 n 列数据代表一个矩阵, 每个数据为一个整数,然后再给出一个数字 R,输出这个矩阵按照顺时针旋转 90 X R ...

  5. 给定一个数组求里面数字拼在一起组成的最小数字

    问题描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. Code: ...

  6. 求组合数python_给定一个序列求指定位数的排列组合数

    题目:求1到p(p<10)个数中取k(1 样例输入:3 2 样例输出:[1,2], [1,3], [2,1], [2,3], [3,1], [3,2], 方法:回溯+深度优先搜索 class S ...

  7. 离散数学 —— 二元关系(图、零图与平凡图、度、握手定理、平行边、简单图与完全图、补图、子图与生成子图、同构、通路与回路、点与边割集、最短路线问题、强弱联通图、邻接矩阵与可达矩阵、欧拉图、平面图等)

    5.1     关系及其表示: 补充一点: 简单路径:无重复边(点不作要求) 基本路径(初级路径):无重复点 一个路径是基本路径,那么必是简单路径 5.2     路与回路: 5.3     图的矩阵 ...

  8. WarShall算法求传递闭包(可达矩阵)

    最近在复习离散数学,顺便记录记录自己对warshall算法的理解. 1.传递闭包(可达矩阵) 传递闭包是有向图的一个重要性质,它指的是在有向图中从任意一个节点出发,可以到达的所有节点的集合.在某些应用 ...

  9. 给定一个n*m矩阵,求从左上角到右下角走的项目3个问题?

    这个问题中走矩阵的格子还是定点是不一样的. 这里给出两个解法. 题目1:给定一个n*m矩阵,求从左上角格子到右下角格子总共存在多少条路径,每次只能向右走或者向下走. # 题目1:给定一个n*m矩阵,求 ...

  10. 给定一个二维 0-1 矩阵,其中 1 表示陆地,0 表示海洋,每个位置与上下左右相连。已知矩阵中有且只有两个岛屿,求最少要填海造陆多少个位置才可以将两个岛屿相连。

    给定一个二维 0-1 矩阵,其中 1 表示陆地,0 表示海洋,每个位置与上下左右相连.已知矩阵中有且只有两个岛屿,求最少要填海造陆多少个位置才可以将两个岛屿相连. 输入是一个二维整数数组,输出是一个非 ...

最新文章

  1. beeline执行sql语句_由“Beeline连接HiveServer2后如何使用指定的队列(Yarn)运行Hive SQL语句”引发的一系列思考...
  2. pandas(三) -- DataFrame的基本操作
  3. ThinkPad紧凑型蓝牙键盘(0B47189)鼠标滚轮用法,F1到F12功能键的功能切换以及其他技巧
  4. SharePoint自动化系列——Solution auto-redeploy using Selenium(C#)
  5. python吧_python初始与安装 - Python东
  6. linux修改java占用端口号_Linux端口被占用、查看
  7. SQL基本操作(三):存储过程和触发器
  8. LeetCode简单题目(#118 #119 #121 #122 #125 #136 #141 #155)-8道
  9. Android透明效果的实现
  10. Binary XML file line #23: Error inflating class android.widget.TextView
  11. Java| 编译和反编译
  12. google code的使用方法
  13. html5css重复径向渐变,CSS3怎么实现重复径向渐变效果
  14. Office-008 文字转公式:word公式输入
  15. Matlab系列之GUI设计实例1
  16. OSPO Summit 2022 正式启动!OSPO Summit 2022 Launched!
  17. Graphics2D 使用详解 【转】
  18. 户外风景拍摄自然风光摄影网站搭建模板
  19. 安卓的SoundPool(音效池)播放声音(及具体参数解析)
  20. 超详细Netty入门

热门文章

  1. 【工作小结】手机WIFI网络抓包的几种方法
  2. matlab实现S域到Z域变换
  3. 如何获取iOS应用网络权限?
  4. python异步编程 图书_Python异步编程介绍
  5. Django下载超时
  6. PHP 解压 ZIP 文件到指定文件夹
  7. 酒店计算机管理系统维护合同,酒店计算机管理系统维护合同协议书范本.pdf
  8. 基于Nodejs+vue开发实现酒店管理系统
  9. 想入行SAP咨询,最具性价比的方式
  10. 关于ISIC数据集如何下载的问题