参考书:图论算法理论、实现及应用(北京大学出版社)
输入数据:(test.txt)
7 9 1 2 2 3 2 5 2 6 3 5 4 3 5 2 5 4 6 7 0 0
程序:
/* 邻接矩阵存储有向图 */ #include <cstring> #include <cstdio> #define MAXN 100 int matrix[MAXN][MAXN]; int main() { int n, m; freopen("test.txt", "r", stdin); while(scanf("%d %d", &n, &m) && m && n) { int i, j, u, v; memset(matrix, 0, sizeof(matrix)); for(i = 0; i < m; ++i) { scanf("%d %d", &u, &v); --u, --v; // 输入数据中顶点序号从1开始记起 matrix[u][v] = 1; } // 输出出度 int inDegree; for(i = 0; i < n; ++i) { inDegree = 0; for(j = 0; j < n; ++j) inDegree += matrix[i][j]; printf("%d ", inDegree); } printf("\n"); int outDegree; for(i = 0; i < n; ++i) { outDegree = 0; for(j = 0; j < n; ++j) outDegree += matrix[j][i]; printf("%d ", outDegree); } printf("\n"); } return 0; }