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

C++ में सभी शीर्षों के दिए गए अंशों से एक ग्राफ बनाएं

मान लीजिए कि हमारे पास शीर्षों की एक सूची है, और उनकी डिग्री दी गई है। हमें उस डिग्री अनुक्रम से एक अप्रत्यक्ष ग्राफ उत्पन्न करना होगा। इसमें लूप या कई किनारे शामिल नहीं होंगे। तो अगर डिग्री अनुक्रम [2, 2, 1, 1] जैसा है, तो ग्राफ़ ऐसा हो सकता है

C++ में सभी शीर्षों के दिए गए अंशों से एक ग्राफ बनाएं

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • ग्राफ़ को स्टोर करने के लिए आसन्न मैट्रिक्स adj को परिभाषित करें

  • प्रत्येक शीर्ष के लिए मैं, करता हूँ

    • प्रत्येक शीर्ष j के लिए जो मान्य है, और i के बगल में

      • यदि शीर्ष i और j की डिग्री शून्य से अधिक है, तो उन्हें कनेक्ट करें

  • मैट्रिक्स प्रदर्शित करें।

उदाहरण

#include <iostream>
#include <iomanip>
using namespace std;
void generateGraph(int vert_degree[], int n) {
   int adj_mat[n][n];
   for(int i = 0; i<n; i++){
      for(int j = 0; j < n; j++){
         adj_mat[i][j] = 0;
      }
   }
   for (int i = 0; i < n; i++) {
      for (int j = i + 1; j < n; j++) {
         if (vert_degree[i] > 0 && vert_degree[j] > 0) {
            vert_degree[i]--; vert_degree[j]--;
            adj_mat[i][j] = adj_mat[j][i] = 1;
         }
      }
   }
   cout << endl << setw(3) << " ";
   for (int i = 0; i < n; i++)
      cout << setw(3) << "(" << i << ")";
      cout << endl << endl;
   for (int i = 0; i < n; i++) {
      cout << setw(4) << "(" << i << ")";
   for (int j = 0; j < n; j++)
      cout << setw(5) << adj_mat[i][j];
      cout << endl;
   }
}
int main() {
   int vert_degree[] = { 2, 2, 1, 1, 1 };
   int n = sizeof(vert_degree) / sizeof(vert_degree[0]);
   generateGraph(vert_degree, n);
}

आउटपुट

      (0)   (1)  (2)  (3)  (4)

(0)    0    1    1    0    0
(1)    1    0    0    1    0
(2)    1    0    0    0    0
(3)    0    1    0    0    0
(4)    0    0    0    0    0

  1. सभी चक्रों को C++ में एक अप्रत्यक्ष ग्राफ में प्रिंट करें

    इस समस्या में, हमें एक अप्रत्यक्ष ग्राफ दिया जाता है और हमें ग्राफ में बनने वाले सभी चक्रों को प्रिंट करना होता है। अप्रत्यक्ष ग्राफ़ एक ग्राफ है जो एक साथ जुड़ा हुआ है। यूनिडायरेक्शनल ग्राफ के सभी किनारे द्विदिश हैं। इसे एक अप्रत्यक्ष नेटवर्क के रूप में भी जाना जाता है। साइकिल ग्राफ़ में डेटा संर

  1. किसी दिए गए स्रोत से गंतव्य तक सभी पथों को C++ में प्रिंट करें

    इस समस्या में हमें एक निर्देशित ग्राफ़ दिया जाता है और हमें स्रोत से ग्राफ़ के गंतव्य तक के सभी पथों को प्रिंट करना होता है। निर्देशित ग्राफ़ किनारों वाला एक ग्राफ़ है जो शीर्ष a से b तक निर्देशित होता है। समस्या को समझने के लिए एक उदाहरण लेते हैं स्रोत =के गंतव्य =पी आउटपुट: K -> T -&

  1. C++ में एक अप्रत्यक्ष ग्राफ में सभी चक्रों की लंबाई का गुणनफल

    हमें इनपुट के रूप में अप्रत्यक्ष के साथ-साथ बिना भार वाले ग्राफ दिए गए हैं और कार्य दिए गए चक्रों के उत्पाद को खोजना और परिणाम प्रदर्शित करना है। उदाहरण इनपुट दी गई आकृति में, 8 नोड हैं और उनमें से 5 नोड 1, 6, 3, 5, 8 सहित चक्र बना रहे हैं और शेष नोड चक्र में शामिल नहीं हैं। तो, चक्र की लंबाई 5