数据结构六度空间的代码步骤
时间: 2023-07-06 18:33:40 浏览: 87
以下是使用 BFS 算法计算社交网络中节点之间的最短路径的代码步骤:
1. 定义一个图的邻接矩阵或邻接表,表示社交网络中每个节点之间的联系。
2. 定义一个数组 distance,用来记录每个节点与起始节点之间的距离。
3. 定义一个队列 queue,将起始节点入队。
4. 当队列不为空时,执行以下操作:
a. 出队一个节点 cur,遍历与 cur 相邻的所有节点 next。
b. 如果 next 未被访问过(即 distance[next] == -1),则将其入队,并更新 distance[next] = distance[cur] + 1。
5. 当队列为空时,所有节点的距离都已计算出。
以下是使用邻接表实现的 C++ 代码示例:
```c++
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int N = 1000; // 最大节点数
vector<int> g[N]; // 邻接表
int distance[N]; // 起始节点到每个节点的距离
void bfs(int start) {
queue<int> q;
q.push(start);
distance[start] = 0;
while (!q.empty()) {
int cur = q.front();
q.pop();
for (int i = 0; i < g[cur].size(); ++i) {
int next = g[cur][i];
if (distance[next] == -1) {
q.push(next);
distance[next] = distance[cur] + 1;
}
}
}
}
int main() {
int n, m, start;
cin >> n >> m >> start;
// 构建邻接表
for (int i = 0; i < m; ++i) {
int u, v;
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
// 初始化 distance 数组
for (int i = 1; i <= n; ++i) {
distance[i] = -1; // -1 表示未被访问过
}
bfs(start);
// 输出起始节点到其余节点的距离
for (int i = 1; i <= n; ++i) {
cout << distance[i] << " ";
}
return 0;
}
```
阅读全文