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

C++ में सभी शीर्षों की दी गई डिग्री से ग्राफ का निर्माण


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

C++ में सभी शीर्षों की दी गई डिग्री से ग्राफ का निर्माण

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

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

  • प्रत्येक शीर्ष i के लिए, करें

    • प्रत्येक शीर्ष 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++ में अप्रत्यक्ष ग्राफ (Undirected Graph) में सभी चक्र (Cycles) प्रिंट करें C++ में अप्रत्यक्ष ग्राफ (Undirected Graph) में सभी चक्र (Cycles) प्रिंट करें

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

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

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

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

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