本题要求输出两个顶点之间是否存在路径 输入格式:输入包括两部分,第一部分是邻接矩阵表示方法中对应1的两个顶点,用0 0 表示结束 第二部分是两个顶点,例如 Vi和Vj 输出格式:如果Vi和Vj存在路径,输出1;否则输出0 我们的输入是邻接矩阵,因此只用比较这个二维数组内部的数据就可。vi与vj之间存在路径是一个双向的,因此第i行在检查的时候只用检查i列就可,相当于只检查了矩阵的下三角,这样可以减小检查次数。当发现两个结点之间有路径时,输出为1;,否则为0,用C语言
时间: 2023-06-18 12:05:03 浏览: 182
以下是一个简单的C语言代码实现:
```c
#include <stdio.h>
int main() {
int n;
scanf("%d", &n); // 读入矩阵大小
int matrix[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]); // 读入矩阵
}
}
int vi, vj;
scanf("%d%d", &vi, &vj); // 读入要查找的两个顶点
while (vi != 0 && vj != 0) {
if (matrix[vi-1][vj-1] == 1 || matrix[vj-1][vi-1] == 1) {
printf("1\n"); // 存在路径
} else {
printf("0\n"); // 不存在路径
}
scanf("%d%d", &vi, &vj); // 读入下一组要查找的顶点
}
return 0;
}
```
这个代码中,我们首先读入邻接矩阵表示的图,并且输入要查找的两个顶点。然后进入一个循环,每次读入一组要查找的顶点,如果它们之间存在路径则输出1,否则输出0。在检查第i行时,我们只需要检查i列以及之前的列,因此只需要检查矩阵的下三角部分。
阅读全文