Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- auto bfs(int s)
- {
- vi dist(n + 1, INF), paths(n + 1, 0);
- dist[s] = 0;
- paths[s] = 1;
- queue<int> q;
- q.push(s);
- while (!q.empty())
- {
- int u = q.front();
- q.pop();
- for (int v : adj[u])
- {
- if (dist[v] > dist[u] + 1)
- {
- dist[v] = dist[u] + 1;
- paths[v] = paths[u];
- q.push(v);
- }
- else if (dist[v] == dist[u] + 1)
- {
- paths[v] += paths[u];
- }
- }
- }
- return make_pair(dist, paths);
- }
Advertisement
Add Comment
Please, Sign In to add comment