#include <stdio.h>#define MAX 6//使用邻接矩阵 int matrix[MAX][MAX]; //图的广度优先遍历 void BFS(int start) { int queue[MAX] = {0}; int visited[MAX] = {0}; //优先队列 int head = 0; int tail = 0; int i; //开始先入队 queue[tail++] = start; visited[start] = 1; while (head != tail) { int v = queue[head++]; PRintf("%d ", v + 1); for (i = 0; i < MAX; i++) { if (matrix[v][i] == 1) { if (visited[i] == 0) { queue[tail++] = i; //入队 visited[i] = 1; } } } }}void inputData() { int i, j; freopen("data.txt", "r", stdin); /* 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 1 0 0 */ for (i = 0; i < MAX; i++) { for (j = 0; j < MAX; j++) { scanf("%d", &matrix[i][j]); } }}int main() { inputData(); BFS(1); return 0;}
新闻热点
疑难解答