【正确答案】输出路径的条件为d>=2。实现本题功能的程序代码如下:
int visited[Vnum],A[Vnum];
void dfs1(graph *g,int vi,int vj,int d)
{
int v,i;
arcnode *p;
visited[vi]=1;
++d;
A[d]=vi;
if(vi==vj && d>=2) //条件d>=2
{
cout<<"一条路径: ";
for(i=0;i<=d; ++i)
cout<<A[i]<<" ";
cout<<endl;
}
p=g→adjlist[vi].firstarc; //找vi的第一个邻接顶点
while(p!=NULL)
{
v=p→adjvex; //v为vi的邻接顶点
if(visited[v]==0 || v==vj)
//若该顶点未标记访问,或为vj,则递归访问
dfs1(g,v,vj,d);
p=p→nextarc; //找vi的下一个邻接顶点
}
visited[vi]=0; //擦除访问标记,以使该顶点可重新使用
--d;
}
void cycle(graph *g,int vi,int d)
{
dfs1(g,vi,vi,d);
}
【答案解析】