BFS of graph
Problem Statement - link #
Given a directed graph. The task is to do Breadth First Traversal of this graph starting from 0
. Note: One can move from node u
to node v
only if there’s an edge from u
to v
and find the BFS traversal of the graph starting from the 0
th vertex, from left to right according to the graph. Also, you should only take nodes directly or indirectly connected from Node 0
in consideration.
Your Task: You don’t need to read input or print anything. Your task is to complete the function bfsOfGraph()
which takes the integer V
denoting the number of vertices and adjacency list as input parameters and returns a list containing the BFS traversal of the graph starting from the 0th vertex from left to right..
Expected Time Complexity: O(V+E)
Expected Auxiliary Space: O(V)
Examples #
Example 1:
Input:
Output: 0 1 2 3 4
Explanation:
0 is connected to 1 , 2 , 3.
2 is connected to 4.
so starting from 0, it will go to 1 then 2
then 3.After this 2 to 4, thus bfs will be
0 1 2 3 4.
Example 2:
Input:
n = 5
arr[] = {4, 2, 7, 6, 9}
Output:
62
Explanation:
First, connect ropes 4 and 2, which makes
the array {6,7,6,9}. Next, add ropes 6 and
6, which results in {12,7,9}. Then, add 7
and 9, which makes the array {12,16}. And
finally add these two which gives {28}.
Hence, the total cost is 6 + 12 + 16 +
28 = 62.
Constraints #
1 ≤ V, E ≤ 10^4
Solutions #
class Solution
{
public:
// Function to return Breadth First Traversal of given graph.
vector<int> bfsOfGraph(int V, vector<int> adj[]) {
// Code here
queue<int> q; q.push(0);
bool vis[V]={false};
vector<int> res;
while(!q.empty()){
int u = q.front(); q.pop();
vis[u]=true;
res.push_back(u);
for(int i: adj[u])
if(!vis[i])
{ vis[i]=1;q.push(i);}
}
return res;
}
};