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

यह जांचने के लिए कार्यक्रम कि हम किसी भी शहर से किसी भी शहर की यात्रा कर सकते हैं या नहीं, पायथन में

मान लीजिए कि हमारे पास n शहर हैं जिन्हें [0, n) की श्रेणी में एक संख्या के रूप में दर्शाया गया है और हमारे पास एक तरफ़ा सड़कों की एक सूची भी है जो एक शहर को दूसरे शहर से जोड़ती है। हमें यह जांचना होगा कि क्या हम किसी शहर से किसी शहर तक पहुंच सकते हैं।

इसलिए, यदि इनपुट n =3 जैसा है, तो सड़कें =[[0, 1], [0, 2], [1,0], [1,2], [2,0], [2,1]] , तो आउटपुट ट्रू होगा, क्योंकि आप 0 से 1 और 1 से 0 तक जा सकते हैं

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

  • फ़ंक्शन को परिभाषित करें dfs() । इसमें मुझे, विज़िट किया गया, g

    . लगेगा
  • मुझे विज़िट किया गया के रूप में चिह्नित करें

  • g[i] में प्रत्येक j के लिए, करें

    • अगर j का दौरा नहीं किया जाता है, तो

      • dfs(j, विज़िट किया गया, g)

  • एक फ़ंक्शन यात्रा () को परिभाषित करें। इसमें जी लगेगा

  • विज़िट किया गया :=एक नया सेट

  • dfs(0, विज़िट किया गया, g)

  • जब विज़िट का आकार n के समान हो तो सही लौटें

  • मुख्य विधि से, निम्न कार्य करें-

  • ग्राफ़ :=एक खाली नक्शा

  • Rev_graph :=एक खाली नक्शा

  • सड़कों में प्रत्येक स्रोत u, और गंतव्य v के लिए, करें

    • ग्राफ़ के अंत में v डालें[u]

    • आपको Rev_graph[v]

      . के अंत में डालें
  • जब यात्रा (ग्राफ) और यात्रा (rev_graph) दोनों सत्य हों तो सही लौटें

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

उदाहरण

class Solution:
   def solve(self, n, roads):
      from collections import defaultdict
         graph = defaultdict(list)
         rev_graph = defaultdict(list)
   for u, v in roads:
      graph[u].append(v)
      rev_graph[v].append(u)
      def dfs(i, visited, g):
      visited.add(i)
   for j in g[i]:
      if j not in visited:
         dfs(j, visited,g)
         def travel(g):
         visited = set()
         dfs(0, visited, g)
      return len(visited)==n
   return travel(graph) and travel(rev_graph)
ob = Solution()
n = 3
roads = [[0, 1],[0, 2],[1,0],[1,2],[2,0],[2,1]]
print(ob.solve(n, roads))

इनपुट

3, [[0, 1],[0, 2],[1,0],[1,2],[2,0],[2,1]]

आउटपुट

True

  1. n को जांचने के लिए प्रोग्राम को पायथन में k के योग के रूप में दिखाया जा सकता है या नहीं

    मान लीजिए कि हमारे पास एक संख्या n है, और दूसरी संख्या k है। हमें जांचना है कि क्या n को k अभाज्य संख्याओं के योग के रूप में दर्शाया जा सकता है या नहीं। इसलिए, यदि इनपुट n =30 k =3 जैसा है, तो आउटपुट सही होगा क्योंकि 30 को 2 + 11 + 17 की तरह दर्शाया जा सकता है। इसे हल करने के लिए, हम इन चरणों का प

  1. पायथन में लुटेरों की जाँच करने का कार्यक्रम तिजोरी को लूट सकता है या नहीं

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

  1. यह जांचने के लिए कार्यक्रम कि ग्राफ़ में कोई सामान्य पहुंच योग्य नोड है या नहीं, पायथन में नहीं है

    मान लीजिए कि हमारे पास एक निर्देशित ग्राफ की एक बढ़त सूची है, n नोड्स हैं और नोड नाम 0 से n-1 हैं। हमारे पास दो पूर्णांक मान a और b भी हैं। हमें यह जांचना होगा कि क्या कोई नोड c ऐसा है कि हम c से a और c से b तक भी जा सकते हैं। तो, अगर इनपुट पसंद है और a =2, b =3, तो आउटपुट ट्रू होगा, क्योंकि यहा