Untitled
unknown
c_cpp
a year ago
1.3 kB
0
Indexable
Never
vector<int> bfsOfGraph(int V, vector<int> adj[]) { queue<int> q; q.push(0); vector<int> bfsVec; // true for a node if its in either visited or explored state. bool visited[V] = {false}; visited[0] = true; // Explored. while (!q.empty()) { int levelSz = q.size(); for (int i = 0; i < levelSz; i++) { // now here visited[node] implicitly mean its in visited state. int node = q.front(); q.pop(); bfsVec.push_back(node); for (int j = 0; j < adj[node].size(); j++) { int connectedNode = adj[node][j]; if (!visited[connectedNode]) { // mark as true to represent the node is in explored state // and when in next level traversal it will be picked up, we // can implicitly consider this true value to mean // that time, that the node is in visited state. visited[connectedNode] = true; q.push(connectedNode); } } } } return bfsVec; }