#include<bits/stdc++.h>
using namespace std;
void BFS(vector<vector<int>>& graph,int start,vector<bool>& visited,queue<int>&q,vector<int>& distance ){
visited[start]=true;
q.push(start);
distance[start]=0;
cout<<q.front()<<"--"<<distance[start]<<endl;
int curr=start;
while(!q.empty()){
for(int i=0;i<graph.size();i++){
if(graph[curr][i]==1 &&visited[i]==false){
q.push(i);
distance[i]=distance[curr]+1;
visited[i]=true;
cout<<q.back()<<"--"<<distance[i]<<endl;
}
}
q.pop();
curr=q.front();
}
}
int main(){
int n;
cout << "Enter the number of nodes: " << endl;
cin >> n;
// defining the adjacency matrix
vector<vector<int>> graph (n,vector<int>(n,0));
// creating the adjacency matrix
for(int i=0; i<n; i++){
for(int j=0; j<n; j++)
cin >> graph[i][j];
}
vector<bool> visited(n,false);
vector<int> distance(n);
queue<int> q;
cout<<"BFS traversal with distance: "<<endl;
BFS(graph,0,visited,q,distance);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgQkZTKHZlY3Rvcjx2ZWN0b3I8aW50Pj4mIGdyYXBoLGludCBzdGFydCx2ZWN0b3I8Ym9vbD4mIHZpc2l0ZWQscXVldWU8aW50PiZxLHZlY3RvcjxpbnQ+JiBkaXN0YW5jZSApewogICAgdmlzaXRlZFtzdGFydF09dHJ1ZTsKICAgIHEucHVzaChzdGFydCk7CiAgICBkaXN0YW5jZVtzdGFydF09MDsKICAgIGNvdXQ8PHEuZnJvbnQoKTw8Ii0tIjw8ZGlzdGFuY2Vbc3RhcnRdPDxlbmRsOwogICAgaW50IGN1cnI9c3RhcnQ7CgogICAgd2hpbGUoIXEuZW1wdHkoKSl7CgogICAgICAgIGZvcihpbnQgaT0wO2k8Z3JhcGguc2l6ZSgpO2krKyl7CiAgICAgICAgICAgIGlmKGdyYXBoW2N1cnJdW2ldPT0xICYmdmlzaXRlZFtpXT09ZmFsc2UpewogICAgICAgICAgICAgICAgcS5wdXNoKGkpOwogICAgICAgICAgICAgICAgZGlzdGFuY2VbaV09ZGlzdGFuY2VbY3Vycl0rMTsKICAgICAgICAgICAgICAgIHZpc2l0ZWRbaV09dHJ1ZTsKICAgICAgICAgICAgICAgIGNvdXQ8PHEuYmFjaygpPDwiLS0iPDxkaXN0YW5jZVtpXTw8ZW5kbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBjdXJyPXEuZnJvbnQoKTsKICAgIH0KfQoKaW50IG1haW4oKXsKCiAgICBpbnQgbjsKCWNvdXQgPDwgIkVudGVyIHRoZSBudW1iZXIgb2Ygbm9kZXM6ICIgPDwgZW5kbDsKCWNpbiA+PiBuOwoJLy8gZGVmaW5pbmcgdGhlIGFkamFjZW5jeSBtYXRyaXgKCgl2ZWN0b3I8dmVjdG9yPGludD4+IGdyYXBoIChuLHZlY3RvcjxpbnQ+KG4sMCkpOwoKCS8vIGNyZWF0aW5nIHRoZSBhZGphY2VuY3kgbWF0cml4Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJCWZvcihpbnQgaj0wOyBqPG47IGorKykKCQkJY2luID4+IGdyYXBoW2ldW2pdOwoJfQoKCXZlY3Rvcjxib29sPiB2aXNpdGVkKG4sZmFsc2UpOwoJdmVjdG9yPGludD4gZGlzdGFuY2Uobik7CglxdWV1ZTxpbnQ+IHE7Cgljb3V0PDwiQkZTIHRyYXZlcnNhbCB3aXRoIGRpc3RhbmNlOiAiPDxlbmRsOwoJQkZTKGdyYXBoLDAsdmlzaXRlZCxxLGRpc3RhbmNlKTsKCgpyZXR1cm4gMDsKfQo=
OAowIDAgMCAxIDAgMCAwIDEKMCAwIDAgMCAxIDAgMCAwCjAgMCAwIDAgMCAwIDEgMAoxIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjEgMCAwIDAgMCAwIDAgMAowIDEgMCAwIDAgMSAwIDEKMCAwIDAgMCAxIDEgMCAw
8
0 0 0 1 0 0 0 1
0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 1 0 0 0 1 0 1
0 0 0 0 1 1 0 0