I've written a C++ program to find out the shortest path using BFS algorithm. However, I can't find a way to print out the path, as in, the nodes which make the shortest path. What should I add so that it's possible for me to print out that path?
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using st = set<ll>;
using kiwi = queue<ll>;
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
const ll mx=1e5+123;
bool visited[mx];
ll dist[mx];
int main(){
fastio;
ll node, edge;
cin>>node>>edge;
st adj[node+1];
for(ll i=1;i<=edge;++i){
ll node1, node2;
cin>>node1>>node2;
adj[node1].emplace(node2);
adj[node2].emplace(node1);
}
///BFS
ll src, dest; cin>>src>>dest;
kiwi q;
visited[src]=true; dist[src]=0;
q.push(src);
while(!q.empty()){
ll s=q.front(); q.pop();
for(auto& x:adj[s]){
if(visited[x]) continue;
visited[x] = true;
dist[x] = dist[s]+1;
q.push(x);
}
}
cout<<dist[dest]<<endl;
return 0;
}