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

सी ++ में एक पेड़ में पूर्वजों-वंशज संबंधों के लिए प्रश्न


इस ट्यूटोरियल में, हम एक पेड़ में पूर्वज-वंश संबंध के लिए क्वेरी खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे।

इसके लिए हमें एक रूटेड ट्री और क्यू प्रश्न प्रदान किए जाएंगे। हमारा काम यह पता लगाना है कि क्वेरी में दिए गए दो मूल दूसरे के पूर्वज हैं या नहीं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
//using DFS to find the relation between
//given nodes
void performingDFS(vector<int> g[], int u, int parent,
int timeIn[], int timeOut[], int& count) {
   timeIn[u] = count++;
   for (int i = 0; i < g[u].size(); i++) {
      int v = g[u][i];
      if (v != parent)
         performingDFS(g, v, u, timeIn, timeOut, count);
   }
   //assigning out-time to a node
   timeOut[u] = count++;
}
void processingEdges(int edges[][2], int V, int timeIn[], int timeOut[]) {
   vector<int> g[V];
   for (int i = 0; i < V - 1; i++) {
      int u = edges[i][0];
      int v = edges[i][1];
      g[u].push_back(v);
      g[v].push_back(u);
   }
   int count = 0;
   performingDFS(g, 0, -1, timeIn, timeOut, count);
}
//checking if one is ancestor of another
string whetherAncestor(int u, int v, int timeIn[], int timeOut[]) {
   bool b = (timeIn[u] <= timeIn[v] && timeOut[v] <= timeOut[u]);
   return (b ? "yes" : "no");
}
int main() {
   int edges[][2] = {
      { 0, 1 },
      { 0, 2 },
      { 1, 3 },
      { 1, 4 },
      { 2, 5 },
   };
   int E = sizeof(edges) / sizeof(edges[0]);
   int V = E + 1;
   int timeIn[V], timeOut[V];
   processingEdges(edges, V, timeIn, timeOut);
   int u = 1;
   int v = 5;
   cout << whetherAncestor(u, v, timeIn, timeOut) << endl;
   return 0;
}

आउटपुट

no

  1. C++ में डिस्कनेक्टेड ग्राफ़ के लिए BFS

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

  1. सरणी तत्वों के गुणन के लिए C++ प्रोग्राम

    पूर्णांक तत्वों की एक सरणी के साथ दिया गया और कार्य एक सरणी के तत्वों को गुणा करना और इसे प्रदर्शित करना है। उदाहरण Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए कार्यक्रम में उपयोग क

  1. C++ में ऑक्टल से दशमलव रूपांतरण के लिए कार्यक्रम

    एक इनपुट के रूप में एक ऑक्टल नंबर के साथ दिए गए, कार्य दिए गए ऑक्टल नंबर को एक दशमलव संख्या में बदलना है। कंप्यूटर में दशमलव संख्या को आधार 10 से दर्शाया जाता है और अष्टक संख्या को आधार 8 से 0 से शुरू होकर 7 तक दर्शाया जाता है जबकि दशमलव संख्या 0 – 9 से शुरू होने वाला कोई भी अंक हो सकता है। अष्टक