广度优先搜索的样例和代码(c/c++)

来源:百度知道 编辑:UC知道 时间:2024/09/24 23:46:00
如题,最好能有示范的样例和略带注释的代码

#include <stdio.h>
#include <string.h>

#define max 500

int map[max][max]; /*标记两个顶点是否相邻, 是则1, 否则0*/
int visited[max]; /*标记节点是否访问,是则1, 否则0*/

int bfs (int v, int n)
{
int j, k, maxsize, front, rear;
int queue[max]; /*把与顶点相邻, 没有访问的节点入队*/
maxsize = max;
front = rear = 0;
visited[v] = 1;
printf ("%d ", v);
queue[++ rear] = v;
while (front != rear) {
front = (front + 1) % maxsize;
k = queue[front];
for (j = 1; j <= n; j ++) {
if (map[k][j] && !visited[j] ) {
printf ("%d ", j);
visited[j] = 1;
rear = (rear + 1) % maxsize;
queue[rear] = j;
}
}
}
return 0;
}
int main ()
{
int i, n, data;
scanf ("%d", &n); /*输入节点数*/
memset (map , 0, sizeof (map));
memset (visited, 0, sizeof(vis