কম্পিউটার টিউটোরিয়াল

C++-এ ডিসকানেক্টেড গ্রাফের জন্য BFS


ডিসকানেক্টেড গ্রাফ হলো এমন গ্রাফ যেখানে এক বা একাধিক নোড গ্রাফের এন্ডপয়েন্ট নয় অর্থাৎ সেগুলো কানেক্টেড নয়।

C++-এ ডিসকানেক্টেড গ্রাফের জন্য BFS

একটি ডিসকানেক্টেড গ্রাফ...

সিম্পল BFS শুধু তখনই প্রযোজ্য যখন গ্রাফ কানেক্টেড থাকে অর্থাৎ গ্রাফের সব ভার্টেক্স এক নোড থেকে অ্যাক্সেসIBLE থাকে। উপরের ডিসকানেক্টেড গ্রাফে এই টেকনিক কাজ করবে না কারণ কিছু নোড অ্যাক্সেসIBLE নয়। তাই ব্রেডথ ফার্স্ট সার্চ ডিসকানেক্টেড গ্রাফে করার জন্য নিচের মডিফাইড প্রোগ্রামটি ভালো হবে।

উদাহরণ

#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. C++-এ STL ব্যবহার করে BFS (কম্পিটিটিভ কোডিং için)