定义
BFS
对于无权图,可以使用BFS求最短路,因为最先从起点到达节点的路径一定是最短路径。
步骤
- 对图进行BFS。
- 对于途中经过的节点和下一个点,有。
实现
struct edge
{
int v, w;
}
int N;
vector<edge> edges[N];
int d[N];
bool vis[N];
void bfs(int s)
{
d[s] = 0;
vis[s] = true;
queue<int> q;
q.push(s);
while(!s.empty())
{
int u = s.top();
s.pop();
for(edge e : edges[u])
{
int v = e.v;
if(!vis[v])
{
vis[v] = true;
d[v] = d[u] + 1;
q.push(v);
}
}
}
}