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

সি++-এ অনির্দেশিত গ্রাফের কানেক্টেড কম্পোনেন্টগুলোর মিনিমাম এলিমেন্টের যোগফল


একটি অ্যারে `arr` দেওয়া আছে যেখানে `arr[i]` = (i+1)-তম নোডের মান। Mটি এজ দেওয়া আছে। প্রতিটি কানেক্টেড কম্পোনেন্টের মিনিমাম ভ্যালু বের করে তাদের যোগফল করুন। আইসোলেটেড নোডকে আলাদা কম্পোনেন্ট বিবেচনা করুন।

ইনপুট

arr[] = {2, 7, 5, 1, 3}, edges: (1,2), (4,5)

আউটপুট

8

ব্যাখ্যা — কম্পোনেন্ট: {1,2} min=2, {4,5} min=1, {3} min=5। যোগফল = 2+1+5 = 8।

পদ্ধতি

  • DFS/BFS দিয়ে কানেক্টেড কম্পোনেন্ট খুঁজুন।
  • ভিজিটেড অ্যারে রেখে ডাবল ভিজিট এড়িয়ান।
  • প্রতিটি কম্পোনেন্টের মিনিমাম বের করে যোগ করুন।

উদাহরণ কোড

#include <bits/stdc++.h> 
using namespace std; 

const int N = 100;
vector graph[N];
bool visited[N];

void dfs(int node, int arr[], int &minimum){
    minimum = min(minimum, arr[node]);
    visited[node] = true;
    for(int v : graph[node])
        if(!visited[v]) dfs(v, arr, minimum);
}

void createEdge(int u, int v){
    graph[u-1].push_back(v-1);
    graph[v-1].push_back(u-1);
}

int minSum(int arr[], int n){
    int sum = 0;
    for(int i=0; i

আউটপুট

The sum of minimum elements in all connected components of an undirected graph is 8

  1. C++-এ যেকোনো সাবঅ্যারের সব উপাদানকে X দিয়ে গুণ করে সাবঅ্যারে সম সর্বাধিক করা

  2. C++-এ ট্রিতে সব নোডে ইনফরমেশন পাস করার জন্য ন্যূনতম ইটেরেশন (Minimum Iterations to Pass Information)

  3. অনসcaffoldড গ্রাফের সব সাইকেল প্রিন্ট করা C++-তে

  4. অনিদেশিত গ্রাফে সাইকলের দৈর্ঘ্যের গুণফল C++-তে