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

C++ में ग्राफ में किसी भी एज का हिस्सा नहीं होने वाले नोड्स की अधिकतम संख्या


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

हम इसे एक पूर्ण ग्राफ बनाने की कोशिश करके करेंगे जहां नोड्स की संख्या n है तो एज की संख्या n(n-1)/2 होगी।

edge = n(n-1)/2 (यहां n नोड्स के लिए)

2*edge = n(n-1)। एक बार n(n-1) > एज की संख्या होने पर हमारे पास अतिरिक्त नोड्स होंगे। इसलिए i=1 से i=n तक पुनरावृति करते हैं।

जब तक i(i-1) > 2*edge। n-i को परिणाम के रूप में लौटाते हैं।

आइए उदाहरणों से समझते हैं -

इनपुट - nodes=5, edges=2

आउटपुट - ग्राफ में किसी भी एज का हिस्सा नहीं होने वाले नोड्स की अधिकतम संख्या: 2

व्याख्या -

2 एज में न्यूनतम 3 नोड्स और अधिकतम 4 नोड्स हो सकते हैं।

3 नोड्स के लिए बिना किसी एज के बचे नोड्स की अधिकतम संख्या = 2

इनपुट - nodes=2, edges=1

आउटपुट - ग्राफ में किसी भी एज का हिस्सा नहीं होने वाले नोड्स की अधिकतम संख्या: 0

व्याख्या -

कम से कम 2 नोड्स एक एज बनाने के लिए आवश्यक हैं। इस मामले में दोनों व्यस्त हैं। कोई नोड नहीं बचा।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • हम उपलब्ध डेटा के लिए दो वेरिएबल nodes और edges लेते हैं।

  • फंक्शन maximum(int nodes, int edges) नोड्स और एज की संख्या को पैरामीटर के रूप में लेता है और ग्राफ में किसी भी एज का हिस्सा नहीं होने वाले अधिकतम नोड्स की गिनती लौटाता है।

  • वेरिएबल i, temp और max लेते हैं।

  • FOR लूप i=0 से i<=nodes तक शुरू करते हैं।

  • temp = i*(i-1) की गणना करते हैं।

  • वेरिएबल total की गणना 2*edges के रूप में करते हैं।

  • जब भी temp, total से अधिक हो जाता है, FOR लूप को तोड़ते हैं।

  • max की गणना nodes-i के रूप में करते हैं।

  • परिणाम को max के रूप में लौटाते हैं।

उदाहरण

#include <bits/stdc++.h> using namespace std; int maximum(int nodes, int edges){ int i, temp = 0, max; for (i = 0; i <= nodes; i++){ temp = i * (i - 1); int total = 2* edges; if (temp >= total){ break; } } max = nodes - i; return max; } int main(){ int nodes = 10; int edges = 5; cout<<"ग्राफ में किसी भी एज का हिस्सा नहीं होने वाले नोड्स की अधिकतम संख्या: "<<maximum(nodes, edges) << endl; }

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

ग्राफ में किसी भी एज का हिस्सा नहीं होने वाले नोड्स की अधिकतम संख्या: 6

  1. - C++ में 8 से विभाज्य और 3 से नहीं विभाज्य सबस्ट्रिंग्स की संख्या

    0-9 की एक स्ट्रिंग दी गई है। इस समस्या के लिए, हमें उन स्ट्रिंग्स की संख्या की गणना करने की आवश्यकता है जो 8 से विभाज्य हैं और 3 से नहीं। यह एक 2-चरण की समस्या है, और हमें इसे हल करने के लिए एक बार में एक चरण का कोड करना होगा, उदाहरण के लिए इनपुट str = 80 आउटपुट 2 इनपुट str = 7675636788 आउटपुट 15 स

  1. दिए गए ग्राफ में ब्रिज एज की संख्या ज्ञात करने का C++ प्रोग्राम दिए गए ग्राफ में ब्रिज एज की संख्या ज्ञात करने का C++ प्रोग्राम

    मान लीजिए n वर्टेक्स और m एज वाला एक अनभारित, निदेश रहित ग्राफ दिया गया है। ग्राफ में एक ब्रिज एज वह एज है जिसे हटाने से ग्राफ असंबद्ध हो जाता है। हमें दिए गए ग्राफ में ऐसी एज की संख्या ज्ञात करनी है। ग्राफ में समानांतर एज या सेल्फ-लूप नहीं हैं। उदाहरण के लिए, यदि इनपुट है n = 5, m = 6, edges = {{1

  1. C++ में अनिर्देशित ग्राफ (Undirected Graph) में किनारों (edges) की गिनती C++ में अनिर्देशित ग्राफ (Undirected Graph) में किनारों (edges) की गिनती

    समस्या विवरण एक अनिर्देशित ग्राफ (undirected graph) दिया गया है। हमें ग्राफ में कुल किनारों (edges) की संख्या गिननी है। अनिर्देशित ग्राफ में सभी किनारे द्विदिश (bidirectional) होते हैं। दृश्य प्रतिनिधित्व उदाहरण इनपुट किनारे: (0,1), (0,2), (1,2), (1,4), (2,4), (2,3), (3,4) आउटपुट किनारों की संख्