从图中某个顶点V0出发,访问此顶点,然后依次访问与V0邻接的、未被访问过的所有顶点,然后再分别从这些顶点出发进行广度优先遍历,直到图中所有被访问过的顶点的相邻顶点都被访问到。若此时图中还有顶点尚未被访问,则另选图中一个未被访问过的顶点作为起点,重复上述过程,直到图中所有顶点都被访问到为止。
BFS(inti)//图用邻接矩阵存储
{
Visited[i]=true; //访问顶点I
queue<int> q;
q.push(i); //顶点i入队列
while (!q.empty()) {
int cur = q.pop(); //从队列中取出首元素
for (int j= 0; j < n; j++) //顺序遍历cur顶点的所有邻接点,并入队列
if (!Visited[j]) and (Data[cur][j]=1) {
Visit[j] = true; //访问顶点j
q.push(j); //顶点j入队列
}
}
}
}