查询vi到vj的路径:采用深度优先遍历
int visited2[max]={0};
int can_reach=0;
void DFS(ALGraph *G,int i,int j){
if (i==j) {
can_reach=1;
return;
}
visited2[i]=1;
for (int w=FirstNeighbor(G,i); w>=0; w=NextNeighbor(G, i,w)) {
if(!visited2[w]&&!can_reach)
DFS(G, w, j);
}
}
广度优先遍历查询是否有边
// 广度优先遍历查询是否有边
int visited3[max]={0};
int BFS(ALGraph *G,int i,int j){
int Q[max];
int front=-1,rear=-1;
Q[++rear]=i;
while(front!=rear){
i=Q[++front];
visited3[i]=1;
if(i==j)
return 1;
for(int w=FirstNeighbor(G,i);w>=0;w=NextNeighbor(G,i,w)){
if(w==j)
return 1;
if(!visited3[w]){
Q[++rear]=w;
visited3[w]=1;
}
}
}
return 0;
}