无环有向图的关联矩阵c语言函数
时间: 2023-09-06 10:09:12 浏览: 53
下面是一个无环有向图的关联矩阵生成函数的 C 语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
void adj_matrix(int n, int m, int edges[][2], int adj[][n]) {
for (int i = 0; i < m; i++) {
int u = edges[i][0];
int v = edges[i][1];
adj[u][i] = 1;
adj[v][i] = -1;
}
}
int main() {
// 例子:4 5 0 1 0 2 1 2 1 3 2 3
int n, m;
scanf("%d %d", &n, &m);
int edges[m][2];
for (int i = 0; i < m; i++) {
scanf("%d %d", &edges[i][0], &edges[i][1]);
}
int adj[n][m];
adj_matrix(n, m, edges, adj);
// 输出关联矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", adj[i][j]);
}
printf("\n");
}
return 0;
}
```
该函数接受三个参数:节点数 `n`,边数 `m`,以及一个二维数组 `edges`,它表示每条边所连接的两个节点。函数生成一个 `n x m` 的关联矩阵 `adj`,其中 `adj[i][j]` 表示第 `i` 个节点与第 `j` 条边的关系,如果第 `j` 条边从节点 `i` 出发,则 `adj[i][j]` 为 1;如果第 `j` 条边指向节点 `i`,则 `adj[i][j]` 为 -1。
使用该函数,可以将输入的边列表转换为关联矩阵。