【例4.7】下图G采用“邻接矩阵”存储,设计一个算法输出图G中从顶点u到v的“所有”简单路径(假设图G中从顶点u到v至少有一条简单路径)。
输入
输入两个整数,表示起点u和终点v的编号。(0 ≤ u,v ≤ 4)
输出
输出可能有多行,每一行输出从u到v的一条简单路径。 查找相邻顶点时按照编号从小到大的顺序进行。
样例
标准输入 复制文本 |
0 3 |
标准输出 复制文本 |
013 0143 0413 043 |
标准输入 复制文本 |
0 2 |
标准输出 复制文本 |
0132 01432 04132 0432 |
提示
//参考代码
//邻接矩阵的类型定义如下: typedef struct { int no; //顶点编号
char data[MAXL]; //顶点其他信息
} VertexType; //顶点类型 typedef struct { int edges[MAXV][MAXV]; //邻接矩阵的边数组
int n,e; //顶点数,边数
VertexType vexs[MAXV]; //存放顶点信息
} MGraph; //完整的图邻接矩阵类型 void CreateMat(MGraph &g,int A[][MAXV],int n,int e) //建立图的邻接矩阵 { int i,j;
g.n=n; g.e=e;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
g.edges[i][j]=A[i][j];
}