/*
首先我想说明几点问题。
1.我不知道你的题意中的路径是单向的还是双向的,不过我把路径设置成双向的了
2.说一下我程序的输入,首先输入一个n,表示该图中有n条路;然后有n行,每行
两个数x, y(1<=x, y<=99),表示这两个地点有一条路径。最后输入两个数, 表示计算这两点之间所有的路径
3.我的思路用的是深搜,不过广搜也是可以的  */
#include  #include int path[100][100];///path[i][j]为0表示i, j两点之间不通,为1表示有一条路
int stack[120], m=1, n, x, y;///存储路径
void dfs(int p) {
int i, j;
for(i=1; i<=100; i++)     {
if(path[p][i]==1)         {
if(i == y)///如果深搜到了终点,就输出刚才经过的路径             {
for(j=0; jprintf(\"%-5d\                }printf(\"%-5d\\n\            }
else///如果该点不是终点             {
stack[m] = i;///将该点存起来                 m++;
dfs(i);///接着深搜                 m--;             }
}     } }
int main() {
int i, j;
memset(path, 0, sizeof(path));     scanf(\"%d\    for(i=0; iscanf(\"%d %d\path[x][y] = path[x][y] = 1;///这两点之间有路径     }
scanf(\"%d %d\    stack[0] = x;     dfs(x); }