邻接矩阵存储有向图(详解)
时间:2022-05-07
本文章向大家介绍邻接矩阵存储有向图(详解),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
邻接矩阵存储有向图
【输入描述】
输入文件包含多组测试数据,每组测试数据描述了一个无权有向图。每组测试数据第一行为两个正整数n和m,1<=n<=100,1<=m<=500,分别表示了有向图的顶点数目和边的数目,顶点数从1开始计起。接下来有m行,每行有两个正整数,用空格隔开,分别表示一条边的起点和终点。每条边出现一次且仅一次,图中不存在自身环和重边。输入文件最后一行为0 0,表示输入数据结束。
【输出描述】:
对输入文件的每个有向图,输出两行:第一行为n个正整数,表示每个顶点的出度;第2行也为n个正整数表示每个顶点的入度。每两个正整数之间用一个空格隔开,每行的最后一个正整数之后没有空格。
【样例输入】
7 9
1 2
2 3
2 5
2 6
3 5
4 3
5 2
5 4
6 7
0 0
【样例输出】
1 3 1 1 2 1 0
0 2 2 1 2 1 1
详解代码如下:
1 #include<string.h>
2 #include<stdio.h>
3 #define MAXN 100 //顶点个数最大值
4 int Edge[MAXN][MAXN]; //邻接矩阵
5 int main(){
6 int i,j; //循环变量
7 int n,m; //顶点的个数、边数
8 int u,v; //边的起点与终点
9 int od,id; //顶点的出度与入度
10 while(1)
11 {
12 scanf("%d%d",&n,&m); //读入定点个数n和边数m
13 if(n==0&&m==0) break; //输入数据结束
14 memset(Edge,0,sizeof(Edge));
15 for(i=1;i<=m;i++)
16 {
17 scanf(" %d%d",&u,&v); //读入边的起点与终点
18 Edge[u-1][v-1] = 1; //构造邻接矩阵
19 }
20 for(i=0;i<n;i++) //求各顶点的出度
21 {
22 od = 0;
23 for(j=0;j<n;j++) od+=Edge[i][j]; //累加到第i行
24 if(i==0) printf(" %d",od);
25 else printf(" %d",od);
26 }
27 printf("n");
28 for(i=0;i<n;i++) //求各顶点的入度
29 {
30 id=0;
31
32 for(j=0;j<n;j++) id+=Edge[j][i]; //累加到第i列
33 if(i==0) printf(" %d",id);
34 else printf(" %d",id);
35 }
36 printf("n");
37 }
38 return 0;
39 }
- SSL 证书部署过程
- MYSQL官方与主流开源版本基准压测对比
- 基础知识:多人使用一个Github仓库
- 基于Ubuntu16.04的微信小程序搭建过程
- 搭建微信小程序教程:基于CentOS 7.6的教程
- MySQL根据5.1.34之前版本的一个BUG分析O_DIRECT
- Git面试常见问题
- 剑指offer代码解析——面试题17合并两个排序的链表
- MySQL优化方案(一)优化SQL脚本与索引
- 从0学习MySQL系列(二)安装篇
- 从0学习MySQL系列(三)概念篇
- SQL Server基础SQL脚本之主外键约束
- SQL Server基础SQL脚本之Group By
- SQL Server基础SQL脚本之内外连接、交叉连接;函数、子查询
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CWFF:一款针对模糊测试的自定义字典工具
- HMM、信号、时序、降噪(附代码)
- 原创 | 图解git,用手绘图带你理解git中分支的原理和应用
- Android 天气APP(二十四)地图天气(上)自动定位和地图点击定位
- 3分钟短文:可能是Laravel模板最直白的用法了,没有之一
- Android 天气APP(二十三)增加灾害预警、优化主页面UI
- Android 天气APP(二十一)滑动改变UI、增加更多天气数据展示,最多未来15天天气预报
- Android 读取csv格式数据文件
- Android LitePal的简单使用
- Android RecyclerVIew列表使用 (编辑、单选、全选、删除、动画效果+附源码)
- Android TV 焦点控制
- Kotlin学习日志(四)函数
- Kotlin学习日志(三)控制语句
- Kotlin学习日志(一)TextView、Button、Toast的使用
- Kotlin学习日志(二)数据类型