সংযোগ বিচ্ছিন্ন গ্রাফ একটি গ্রাফ যেখানে এক বা একাধিক নোডগুলি গ্রাফের শেষ বিন্দু নয় অর্থাৎ তারা সংযুক্ত নয়৷
একটি সংযোগ বিচ্ছিন্ন গ্রাফ…
এখন, সাধারণ BFS শুধুমাত্র তখনই প্রযোজ্য যখন গ্রাফটি সংযুক্ত থাকে অর্থাৎ গ্রাফের সমস্ত শীর্ষবিন্দু গ্রাফের একটি নোড থেকে অ্যাক্সেসযোগ্য। উপরের সংযোগ বিচ্ছিন্ন গ্রাফ কৌশলে কিছু আইন অ্যাক্সেসযোগ্য নয় বলে সম্ভব নয় তাই নিম্নলিখিত পরিবর্তিত প্রোগ্রামটি সংযোগ বিচ্ছিন্ন গ্রাফে প্রথম অনুসন্ধান করার জন্য আরও ভাল হবে৷
উদাহরণ
#include<bits/stdc++.h> using namespace std; void insertnode(vector<int> adj[], int u, int v) { adj[u].push_back(v); } void breathFirstSearch(int u, vector<int> adj[], vector<bool> &visited) { list<int> q; visited[u] = true; q.push_back(u); while(!q.empty()) { u = q.front(); cout << u << " "; q.pop_front(); for (int i = 0; i != adj[u].size(); ++i) { if (!visited[adj[u][i]]) { visited[adj[u][i]] = true; q.push_back(adj[u][i]); } } } } void BFSdisc(vector<int> adj[], int V) { vector<bool> visited(V, false); for (int u=0; u<V; u++) if (visited[u] == false) breathFirstSearch(u, adj, visited); } int main() { int V = 5; vector<int> adj[V]; insertnode(adj, 0, 23); insertnode(adj, 0, 4); insertnode(adj, 1, 2); insertnode(adj, 1, 3); insertnode(adj, 1, 4); insertnode(adj, 2, 3); insertnode(adj, 3, 4); BFSdisc(adj, V); return 0; }
আউটপুট
0 4 1 2 3