采用邻接表存储结构,编写一个算法,判别无向图中任意给定的两个顶点之间是否存在一条长度为为k的简单路径。

题目内容(请给出正确答案)
采用邻接表存储结构,编写一个算法,判别无向图中任意给定的两个顶点之间是否存在一条长度为为k的简单路径。

参考答案和解析
参考答案:
  [算法描述]
  int visited[MAXSIZE];
  int exist_path_len(ALGraph G,int i,int j,int k)
  //判断邻接表方式存储的有向图G的顶点i到j是否存在长度为k的简单路径
  {if(i==j&&k==0) return 1; //找到了一条路径,且长度符合要求
  else if(k>0)
  {visited[i]=1;
  for(p=G.vertices[i].firstarc;p;p=p->nextarc)
  {l=p->adjvex;
  if(!visited[l])
  if(exist_path_len(G,l,j,k-1)) return 1; //剩余路径长度减一
  }//for
  visited[i]=0; //本题允许曾经被访问过的结点出现在另一条路径中
  }//else
  return 0; //没找到
  }//exist_path_len
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
更多相关问题