用c语言用关联矩阵判断是有向图还是无向图1
时间: 2023-12-17 19:03:06 浏览: 73
判断有向图和无向图的连通性
关联矩阵是表示有向图或无向图的一种方式,可以用来判断一个图是有向图还是无向图。关联矩阵的定义是一个矩阵,其中行表示顶点,列表示边,矩阵中的元素表示该顶点与该边是否相连。如果是无向图,则矩阵中的元素只能是0或1,而且是对称的,即(i,j)和(j,i)处的值相等。如果是有向图,则矩阵中的元素只能是0或1,而且(i,j)和(j,i)处的值可以不相等。
因此,判断一个图是有向图还是无向图,可以通过判断其关联矩阵是否对称来实现。如果矩阵对称,则是无向图,否则是有向图。下面是一个示例代码:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 100
int main()
{
int n, m;
int matrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM] = {0};
int i, j, symmetrical = 1;
printf("请输入顶点数和边数:\n");
scanf("%d%d", &n, &m);
printf("请输入每条边的两个端点:\n");
for (int k = 0; k < m; k++) {
int u, v;
scanf("%d%d", &u, &v);
matrix[u][k] = 1;
matrix[v][k] = -1;
}
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
if (matrix[i][j] != -matrix[j][i]) {
symmetrical = 0;
break;
}
}
if (j < m) {
break;
}
}
if (symmetrical) {
printf("该图是无向图\n");
} else {
printf("该图是有向图\n");
}
return 0;
}
```
该代码实现了通过输入顶点数、边数和每条边的两个端点来构造关联矩阵,并判断其是否对称,从而判断是有向图还是无向图。
阅读全文