无向图最短路径c++
时间: 2023-08-03 16:15:52 浏览: 106
你可以使用广度优先搜索(BFS)来求无向图的最短路径。
下面是一个基于邻接表的C++代码示例:
```cpp
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
const int MAXN = 100005; // 最大节点数
vector<int> g[MAXN]; // 邻接表存储图
int dist[MAXN]; // 存储每个节点到起点的最短距离
bool vis[MAXN]; // 记录每个节点是否已经访问过
void bfs(int s) {
queue<int> q;
q.push(s);
dist[s] = 0;
vis[s] = true;
while (!q.empty()) {
int u = q.front();
q.pop();
for (int i = 0; i < g[u].size(); i++) {
int v = g[u][i];
if (!vis[v]) {
dist[v] = dist[u] + 1;
vis[v] = true;
q.push(v);
}
}
}
}
int main() {
int n, m; // n是节点数,m是边数
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int u, v;
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
int s, t; // 起点和终点
cin >> s >> t;
bfs(s);
cout << dist[t] << endl;
return 0;
}
```
该示例代码从标准输入读入无向图的节点数和边数,然后读入每条边的起点和终点。接着读入起点和终点,然后使用BFS求出起点到终点的最短距离,并输出结果。
阅读全文