Problem

4 /10


सबसे छोटा तरीका

Theory Click to read/hide

यदि किसी ग्राफ़ में ऋणात्मक भार का चक्र है, तो औपचारिक रूप से फ़्लॉइड-वॉर्शल एल्गोरिथम ऐसे ग्राफ़ पर लागू नहीं होता है।

वास्तव में, i शीर्षों के उन युग्मों के लिए, जिनके बीच ऋणात्मक भार के चक्र में प्रवेश करना असंभव है, एल्गोरिद्म ठीक से काम करेगा।

शीर्षों के उन्हीं युग्मों के लिए जिनके लिए कोई उत्तर नहीं है (उनके बीच पथ पर एक ऋणात्मक चक्र की उपस्थिति के कारण), फ़्लॉइड के एल्गोरिद्म को उत्तर के रूप में कुछ संख्या (संभवतः अत्यधिक ऋणात्मक, लेकिन आवश्यक नहीं) मिलेगी। हालांकि, फ़्लॉइड के एल्गोरिथम को वर्टिकल के ऐसे जोड़े को बड़े करीने से संभालने और आउटपुट जैसे \(- \infty\) में सुधार किया जा सकता है।

ऐसा करने के लिए, उदाहरण के लिए, निम्नलिखित मानदंड""पथ का अस्तित्वहीन होना" किया जा सकता है। तो, सामान्य फ़्लॉइड एल्गोरिथम को इस ग्राफ़ पर काम करने दें। फिर शीर्षों i और j अगर और केवल अगर i से कोई शीर्ष t पहुंच योग्य है और जिससे j पहुंच योग्य है, जिसके लिए  \(d) के बीच कोई सबसे छोटा रास्ता नहीं है [t][t]<0\)

इसके अलावा, नकारात्मक चक्रों वाले ग्राफ़ के लिए फ्लोयड के एल्गोरिथ्म का उपयोग करते समय, यह याद रखना चाहिए कि काम की प्रक्रिया में उत्पन्न होने वाली दूरियां प्रत्येक चरण के साथ नकारात्मक, घातीय रूप से जा सकती हैं। इसलिए, आपको नीचे से सभी दूरियों को कुछ मान तक सीमित करके पूर्णांक अतिप्रवाह से सावधान रहना चाहिए (उदाहरण के लिए,  \(- \infty\))।

मौखिक रूप से, समाधान का वर्णन इस प्रकार किया जा सकता है:
फ़्लॉइड-वॉर्शल एल्गोरिद्म द्वारा इनपुट ग्राफ़ के लिए काम करने के बाद, आइए शीर्षों के सभी युग्मों पर पुनरावृति करें \((i,j)\), और ऐसी प्रत्येक जोड़ी के लिए हम जाँचते हैं, i से j तक का सबसे छोटा रास्ता असीम रूप से छोटा है या नहीं। ऐसा करने के लिए, तीसरे शीर्ष टी पर पुनरावृति करते हैं, और यदि यह \(d[t][t] < 0\)  (अर्थात यह ऋणात्मक भार के चक्र में स्थित है), और यह i और j — तो पथ \((i,j)\) अनंत लंबाई का हो सकता है।

Problem

आपको एक निर्देशित पूर्ण ग्राफ़ दिया जाता है, जिसके किनारों पर कुछ भार (लम्बाई) नियत किए जाते हैं। वजन सकारात्मक, नकारात्मक या शून्य हो सकता है। हम इस ग्राफ में अलग-अलग शीर्षों के सभी जोड़े के बीच सभी संभावित पथों की न्यूनतम लंबाई में रुचि रखते हैं। यह पता लगाना आवश्यक होगा कि क्या यह न्यूनतम मौजूद है, और यदि ऐसा है, तो इसकी गणना करें। (कोई न्यूनतम नहीं है यदि ग्राफ़ में ऋणात्मक लंबाई का पथ खोजना संभव है, मनमाने ढंग से निरपेक्ष मान में बड़ा, अनंत की ओर प्रवृत्त)।
 
इनपुट
पहली पंक्ति N≤50 शीर्ष है। इसके बाद ग्राफ़ का आसन्न मैट्रिक्स आता है, यानी N पंक्तियाँ, जिनमें से प्रत्येक में N संख्याएँ होती हैं। आसन्न मैट्रिक्स की i-th पंक्ति में j-th नंबर i-th वर्टेक्स से j-th एक तक जाने वाले किनारे की लंबाई निर्दिष्ट करता है। लंबाई -1000000 से 1000000 तक कोई भी मान ले सकती है। यह गारंटी है कि मैट्रिक्स के मुख्य विकर्ण पर शून्य हैं।
 
आउटपुट
एक नंबर प्रिंट करें – वांछित न्यूनतम। यदि यह मौजूद नहीं है, तो आउटपुट  -1।
उदाहरण <टेबल क्लास = "टेबल टेबल-कंडेंस्ड टेबल-होवर"> <सिर> <वें># <वें>इनपुट <वें>आउटपुट <शरीर> 1 <टीडी>
3
0 42 18468 
6335 0 26501 
19170 15725 0 
42 2 <टीडी>
3
0 -7 3
-2 0 10
2 215 0 
-1