邻接表程序怎么输入文字

时间:2025-01-27 13:57:15 单机游戏

输入邻接表程序的文字描述如下:

输入顶点数目和边数

首先输入顶点的数目 `n` 和边的数目 `m`。

输入每条边的信息

接下来输入 `m` 行,每行输入一条边的信息,包括边的起点 `from`、终点 `to` 和边的权重 `w`。

初始化

初始化一个足够大的数组 `e` 来存储所有的边,以及一个数组 `pre` 来记录每个顶点的直接前驱节点。

输出每个顶点的出度和入度

最后输出每个顶点的出度和入度。

示例输入输出

输入示例

```

5 6

1 2 3

1 3 4

2 3 5

2 4 6

3 4 7

4 5 8

```

输出示例

```

顶点 0 的出度: 2

顶点 0 的入度: 0

顶点 1 的出度: 2

顶点 1 的入度: 1

顶点 2 的出度: 2

顶点 2 的入度: 2

顶点 3 的出度: 2

顶点 3 的入度: 2

顶点 4 的出度: 2

顶点 4 的入度: 1

```

代码示例

```c

include

include

include

define MAXN 100

typedef struct {

int to;

int w;

int next;

} Edge;

int main() {

int n, m;

scanf("%d %d", &n, &m);

Edge e[MAXN];

int pre[MAXN];

memset(pre, -1, sizeof(pre));

for (int i = 0; i < m; i++) {

int from, to, w;

scanf("%d %d %d", &from, &to, &w);

e[i].to = to;

e[i].w = w;

e[i].next = pre[from];

pre[from] = i;

}

// 输出每个顶点的出度和入度

for (int i = 0; i < n; i++) {

int out_degree = 0, in_degree = 0;

for (int j = pre[i]; j != -1; j = e[j].next) {

out_degree++;

}

for (int j = 0; j < m; j++) {

if (e[j].to == i) {

in_degree++;

}

}

printf("顶点 %d 的出度: %d\n", i, out_degree);

printf("顶点 %d 的入度: %d\n", i, in_degree);

}

return 0;

}

```

这个程序首先读取顶点数 `n` 和边数 `m`,然后读取每条边的信息并构建邻接表。最后,它输出每个顶点的出度和入度。