কম্পিউটার

C++ এ একটি গ্রাফের সর্বোচ্চ মানের স্থানান্তর খুঁজুন


এই সমস্যায়, আমাদের N নোডের একটি গ্রাফ দেওয়া হয়েছে। আমাদের কাজ হল পরিবর্তিত অ্যারের ন্যূনতম মানের সর্বাধিক সম্ভাব্য মান খুঁজে বের করা।

গ্রাফের জন্য আমাদের কাছে নোডগুলির একটি স্থানান্তর রয়েছে যা একটি সাধারণ প্রান্ত ভাগ করে এর বাম দিকে ন্যূনতম 1টি নোড সহ প্রবর্তনের সংখ্যা৷

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

Input : N = 4, edge = {{1, 2}, {2, 3}, {3, 4}, {4, 1}}
Output : 3

সমাধান পদ্ধতি

সমস্যার একটি সহজ সমাধান হল একটি নোড থেকে গাছটিকে তার সমস্ত সংলগ্ন নোড পরিদর্শন করা। আমরা এটির সাথে সংযুক্ত নোডের সংখ্যার সূত্র ব্যবহার করে নোডগুলির স্থানান্তর খুঁজে পাব৷

সূত্রটি হল,

উপাদানের আকার - 1।

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

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

int dfs(int x, vector<int> adjMat[], int visited[]){
   int sz = 1;
   visited[x] = 1;
   for (auto ch : adjMat[x])
      if (!visited[ch])
         sz += dfs(ch, adjMat, visited);
   return sz;
}
int maxValPermutationGraph(int n, vector<int> adjMat[]){
   int val = 0;
   int visited[n + 1] = { 0 };
   for (int i = 1; i <= n; i++)
      if (!visited[i])
         val += dfs(i, adjMat, visited) - 1;
   return val;
}
int main(){
   int n = 4;
   vector<int> adjMat[n + 1] = {{1, 2}, {2, 3}, {3, 4}, {4, 1}};
   cout<<"The maximum value permutation of a graph is "<<maxValPermutationGraph(n, adjMat);
   return 0;
}

আউটপুট

The maximum value permutation of a graph is 3

  1. একটি গ্রাফে সুপার শীর্ষবিন্দুগুলি খুঁজে বের করার জন্য C++ প্রোগ্রাম

  2. একটি গ্রাফ থেকে সর্বাধিক স্কোর কমানো যেতে পারে তা খুঁজে বের করতে C++ প্রোগ্রাম

  3. একটি অনির্দেশিত গ্রাফের সংযুক্ত উপাদানগুলি খুঁজে পেতে C++ প্রোগ্রাম

  4. একটি গ্রাফের প্রান্ত সংযোগ খুঁজে পেতে C++ প্রোগ্রাম