কম্পিউটার

C++ এ সংযোগ বিচ্ছিন্ন গ্রাফের জন্য BFS


সংযোগ বিচ্ছিন্ন গ্রাফ একটি গ্রাফ যেখানে এক বা একাধিক নোডগুলি গ্রাফের শেষ বিন্দু নয় অর্থাৎ তারা সংযুক্ত নয়৷

C++ এ সংযোগ বিচ্ছিন্ন গ্রাফের জন্য BFS

একটি সংযোগ বিচ্ছিন্ন গ্রাফ…

এখন, সাধারণ 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

  1. একটি গ্রাফের জন্য ব্রেডথ ফার্স্ট সার্চ (BFS)

  2. অ্যারের উপাদানগুলির গুণনের জন্য C++ প্রোগ্রাম

  3. C++ এ অক্টাল থেকে দশমিক রূপান্তরের জন্য প্রোগ্রাম

  4. BFS C++ এ প্রতিযোগিতামূলক কোডিংয়ের জন্য STL ব্যবহার করছে?