2014-d-二-3

// 未确认

int visit[maxSize];
int stack[maxSize];
int j=0;
int u,pre;//第二个结点、用于指向出栈前的结点
int len;

void dfs(AGraph *G,int v)
{


    ArcNode *p;//边结点
    visit[v]=1;//标记访问

    stack[++j]=v;//新访问结点入栈
    if(v==u)//找到一条联通路径
    {
        if(j-1==len)//判断路径长度是否符合规定
        {
           //输出路径
        }
        visit[v]=0;
        pre=v;
        --j;//u顶点先出栈
        for(k=j;k>0;k--)
        {

            p=G->adjlist[stack[k]].firstarc;
            while(p!=NULL)
            {
                if(visit[p->adjvex]==0&&p-adjvex!=pre)
                {
                    dfs(G,p->adjvex);
                }
                p=p->next;
            }
        }
    }

    p=G->adjlist[v].firstarc;
    while(p!=NULL)
    {
        if(visit[p->adjvex]==0)
        {
            dfs(G,p->adjvex);
        }
        p=p->next;
    }
}