邻接矩阵存储有向图
2016-02-01 13:57
197 查看
邻接矩阵存储有向图
【输入描述】输入文件包含多组测试数据,每组测试数据描述了一个无权有向图。每组测试数据第一行为两个正整数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
代码:
#include<stdio.h> #define MAXN 100 int Edge[MAXN][MAXN]; int main( ) { int i,j,m,n,u,v;od,id; while(~scanf( "%d%d”,&n,&m)&&n&&m) { memset( Edge, 0, sizeof(Edge) ); for( i=0;i<n;i++) { scanf("%d%d",&u,&v); Edge[u-1][v-1]=1; } for(i=0;i<n;i++) { od=0; for(j=1;j<=m;j++) od+=Edge[i][j]; if(i==0) printf("%d",od); else printf(" %d",od); } printf("\n"); for(i=0;i<n;i++) { id=0; for(j=0;j<n;j++) id=Edge[j][i]; if(i==0) printf("%d",id); else printf(" %d",id); } printf("\n"); } return 0; }
相关文章推荐
- 机器学习流水线(Machine Learning Pipelines)
- 0和1中的最大子矩阵(1506加强版)(1505和2870)
- 136 socket-1 基础知识
- Fatal error: Maximum function nesting level of '100' reached, aborting!
- 7.5 Models -- Persisting Records
- Android studio Debug效率提升
- Boost 学习之算法篇 mismatch
- android *** Layout 06 RadioButton && ToggleButton && Switch
- C# 中==和Equal的区别
- Excel数据处理:提取混合字符中的汉字
- php函数ob_start()、ob_end_clean()、ob_get_contents()
- MYSQLI - mysqli操作数据库
- 303. Range Sum Query - Immutable
- ios学习 Mac下获取AppStore安装包文件路径
- 最简单的基于FFmpeg的AVfilter的例子-纯净版
- (八) shiro + spring + mybatis整合开发
- Linux下安装MySql(主备)
- 非旋转式treap及可持久化
- mybatis generator eclipse插件的安装
- MonoBehaviour 生命周期