本文章代码中的图用邻接矩阵来表示,所以算法复杂度为O(V^2)。 如果用邻接表来表示,那么算法的复杂度为O(V+E)。 献上代码: #include <iostream> #include <queue> #include <climits> #define MAXLENGTH 1000 #define WHITE false #define BLACK true using namespace std; //the color of node i bool color[MAXLENGTH]; //the parent of node i int Parent[MAXLENGTH]; //the distance from i to start int Distance[MAXLENGTH]; //the node graph int Graph[MAXLENGTH][MAXLENGTH]; void BFS(int s, int n) { queue<int> Queue; for (int i = 0; i < n; ++i) { color[i] = WHITE; Parent[i] = -1; Distance[i] = INT_MAX; } color[s] = BLACK; Distance[s] = 0; Queue.push(s); while (!Queue.empty()) { int from = Queue.front(); Queue.pop(); for (int i = 0; i < n; ++i) { if (Gra