2013-d-二-3
/**
算法思想:从一个顶点采用深度优先搜索遍历,
如果能访问到所有结点则该顶点为根。
**/
#define maxSize 100
int visit[maxSize];//标记访问数组
int num=0;//用于统计访问过的节点数
void SearchRoot(AGraph *G)
{
int i;
for(i=0;i<G->n;++i) visit[i]=0;//设置未访问
for(i=0;i<G->n;++i)
{
DFS(G,i);
if(num==G->n) printf("%c",G->adjlist[i].data);
for(i=0;i<G->n;++i) visit[i]=0;//设置未访问
num=0;
}
}
void DFS(AGraph G,int v)
{
ArcNode *p;
visit[v]=1;
++num;//用于记录访问过顶点的数量
p=adjlist[v].firstarc;
while(p!=NULL)
{
if(visit[p->adjvex]==0)
DFS(G,p->adjvex);
p=p->nextarc;
}
}