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

पायथन में ट्री में ठीक k दूरी वाले अलग-अलग शीर्ष युग्मों की संख्या खोजें


मान लीजिए हमारे पास एक पूर्णांक k है और n नोड्स वाला एक ट्री भी है। हमें उन अलग-अलग शीर्ष युग्मों की संख्या गिननी है जिनके बीच ठीक k दूरी है।

इसलिए, यदि इनपुट k = 2 है

पायथन में ट्री में ठीक k दूरी वाले अलग-अलग शीर्ष युग्मों की संख्या खोजें

तो आउटपुट 4 होगा।

समाधान दृष्टिकोण

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

  • N := 5005
  • graph := आकार N की एडजेसेंसी सूची
  • vertex_count := आकार 505 x 5005 का 2D मैट्रिक्स
  • res := 0
  • insert_edge(x, y) फ़ंक्शन परिभाषित करें:
    • graph[x].append(y)
    • graph[y].append(x)
  • dfs(v, parent) फ़ंक्शन परिभाषित करें:
    • vertex_count[v][0] := 1
    • graph[v] में प्रत्येक i के लिए:
      • यदि i != parent:
        • dfs(i, v)
        • j को 1 से k तक:
          • res += vertex_count[i][j-1] * vertex_count[v][k-j]
        • j को 1 से k तक:
          • vertex_count[v][j] += vertex_count[i][j-1]

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

N = 5005
graph = [[] for i in range(N)]
vertex_count = [[0 for i in range(505)] for i in range(N)]
res = 0

def insert_edge(x, y):
    graph[x].append(y)
    graph[y].append(x)

def dfs(v, parent):
    global res
    vertex_count[v][0] = 1
    for i in graph[v]:
        if i != parent:
            dfs(i, v)
            for j in range(1, k + 1):
                res += vertex_count[i][j - 1] * vertex_count[v][k - j]
            for j in range(1, k + 1):
                vertex_count[v][j] += vertex_count[i][j - 1]

k = 2
insert_edge(1, 2)
insert_edge(2, 3)
insert_edge(3, 4)
insert_edge(2, 5)
dfs(1, 0)
print(res)

इनपुट

k = 2, edges: (1,2), (2,3), (3,4), (2,5)

आउटपुट

4
  1. Python में n-ary ट्री का रूट खोजने का प्रोग्राम Python में n-ary ट्री का रूट खोजने का प्रोग्राम

    मान लीजिए, हमें एक n-ary ट्री के नोड्स एक सरणी में दिए गए हैं। हमें ट्री को पुनर्निर्मित करके उसका रूट नोड ढूंढना और वापस करना है। वापस किए गए नोड से पूरा ट्री प्रीऑर्डर नोटेशन में प्रदर्शित करना है। इसलिए, यदि इनपुट निम्न ट्री है: तो आउटपुट होगा: [14, 27, 32, 42, 56, 65] हम ट्री के प्रीऑर्डर ट्रै

  1. पायथन में n x m आकार के आयत के अंदर रखे जा सकने वाले 2x1 आकार के आयतों की संख्या खोजें पायथन में n x m आकार के आयत के अंदर रखे जा सकने वाले 2x1 आकार के आयतों की संख्या खोजें

    मान लीजिए हमारे पास दो मान n और m हैं। हमें 2x1 आकार के आयतों की संख्या ढूंढनी है जिन्हें n x m आकार के आयत के अंदर रखा जा सकता है। कुछ शर्तें हैं जिन पर विचार करना है: कोई भी दो छोटे आयत ओवरलैप नहीं हो सकते। प्रत्येक छोटा आयत बड़े आयत के अंदर पूरी तरह से स्थित होना चाहिए। बड़े आयत के किनारों को छ

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्