Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

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++ प्रोग्राम ग्राफ में सुपर वर्टिस का पता लगाने के लिए

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं। कोने 1 से n तक गिने जाते हैं, और वे सरणी किनारों में दिए गए किनारों से जुड़े होते हैं। प्रत्येक शीर्ष का 1 से n तक की संख्या के भीतर x मान होता है जो कि सरणी मान में दिया जाता है। अब, हमें ग्राफ से अति शीर्षों का पता लगाना है। एक शीर्ष i को सु

  1. C++ प्रोग्राम स्कोर की अधिकतम राशि का पता लगाने के लिए जिसे ग्राफ़ से घटाया जा सकता है

    मान लीजिए, एक भारित, अप्रत्यक्ष ग्राफ है जिसमें n कोने और m किनारे हैं। ग्राफ़ के स्कोर को ग्राफ़ में सभी किनारों के वज़न के योग के रूप में परिभाषित किया गया है। किनारे के वजन नकारात्मक हो सकते हैं, और यदि उन्हें हटा दिया जाता है तो ग्राफ का स्कोर बढ़ जाता है। हमें क्या करना है, हमें ग्राफ को कनेक्ट

  1. सी ++ प्रोग्राम एक ग्राफ की एज कनेक्टिविटी का पता लगाने के लिए

    इस कार्यक्रम में हमें एक ग्राफ की एज कनेक्टिविटी को खोजने की जरूरत है। ग्राफ़ के ग्राफ़ की एक एज कनेक्टिविटी का अर्थ है कि यह एक पुल है, इसे हटाने से ग्राफ़ डिस्कनेक्ट हो जाएगा। डिस्कनेक्ट किए गए अप्रत्यक्ष ग्राफ़ में पुल को हटाने के साथ जुड़े घटकों की संख्या बढ़ जाती है। कार्य और छद्म कोड: Begin &n