একটি অ্যারে `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; vectorgraph[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