diff --git a/Graphs/bfs0-1.cpp b/Graphs/bfs0-1.cpp new file mode 100644 index 0000000..5ade04f --- /dev/null +++ b/Graphs/bfs0-1.cpp @@ -0,0 +1,19 @@ +vector d(n, INF); +d[s] = 0; +deque q; +q.push_front(s); +while (!q.empty()) { + int v = q.front(); + q.pop_front(); + for (auto edge : adj[v]) { + int u = edge.first; + int w = edge.second; + if (d[v] + w < d[u]) { + d[u] = d[v] + w; + if (w == 1) + q.push_back(u); + else + q.push_front(u); + } + } +}