bool visited[MVNum];//访问标志数组,其初值为"false"
void DFS(Graph G,int v)
{//从第v个顶点出发递归
cout<<v;
visited[v]=true;//访问第v个顶点,并置访问标志数组相应分量值为true
for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
//依次检查v的所有邻接点w,FirstAdjVex(G,v)表示v的第一个邻接点
//NextAdjVex(G,v,w)表示v相对于w的下一个邻接点,w>=0表示存在邻接点
if(!visited[w]) DFS(G,w); //对v的尚未访问的邻接点w递归调用DFS
}
void DFSTraverse(Graph G)
{//对非连通图做深度优先遍历
for(v=0;v<G.vexnum;++v) visited[v]=false; //访问标志数组初始化
for(v=0;v<G.vexnum;++v) //循环上一个算法
if(!visited[v]) DFS(G,v); //对为访问的顶点调用DFS
}
void DFS_AM(AMGraph G,int v)
{//图G为邻接矩阵类型,从第v个顶点出发深度优先搜索遍历图
cout<<v;
visited[v]=true;//访问第v个顶点,并置访问标志数组相应分量为true
for(w=0;w<G.vexnum;w++)
if((G.arcs[v][m]!=0)&