自学内容网 自学内容网

有向图是否存在顶点vi到顶点vj的路径(i不等于j)

按图的广度优先搜索判断以邻接矩阵存储的有向图是否存在由顶点vi到顶点vj的路径(i不等于j)。

思想:基于BFS,从vi开始进行扩散搜索,如果过程中碰到vj,则存在vi到vj的路径;如果结束都没有碰到,则没有。

代码:

bool Path(int AdjMatrix[][MaxNumV],int numV,int v1,int v2,bool *visited){
for(int i=0;i<numV;i++){//初始化访问情况 
visited[i]=false;
}

SqQueue queue;//初始化队列
initQueue(Queue);

visited[v1]=true;//顶点v1访问过,入队 
enQueue(queue,v1); 

//队列不为空,使用广度优先遍历 
while(!queueEmpth(queue)){
int v;
deQueue(queue,v);//出队

for(int w=0;w<numV;w++){//访问从顶点v出发后到达的所有顶点
if(AdjMatrix[v][w]==1&&w==v2) {//v1到v2有边 
return true;
}

if(AdjMatrix[v][w]==1&&visited[w]=false){//v到w有边,w还没有访问过,则w入队 
visited[w]=true;
enQueue(queue,w);
}
} 
} 
return false;//判断是否存在v1到v2的路径 
} 


原文地址:https://blog.csdn.net/m0_56332819/article/details/142826884

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!