RULES: 1. सभी HTML टैग अपरिवर्तित रखें 2. <code> और <pre> टैग के अंदर कोड अपरिवर्तित रखें 3. यदि कोड में रूसी स्ट्रिंग/वेरिएबल नाम हैं → उन्हें अंग्रेजी में अनुवादित करें (हिंदी में नहीं) 4. वर्णनात्मक पाठ का हिंदी में अनुवाद करें 5. केवल अनुवाद लौटाएं, औ

C++ Hard STL

कार्य «RULES: 1. सभी HTML टैग अपरिवर्तित रखें 2. <code> और <pre> टैग के अंदर कोड अपरिवर्तित रखें 3. यदि कोड में रूसी स्ट्रिंग/वेरिएबल नाम हैं → उन्हें अंग्रेजी में अनुवादित करें (हिंदी में नहीं) 4. वर्णनात्मक पाठ का हिंदी में अनुवाद करें 5. केवल अनुवाद लौटाएं, औ»

यह एक निर्देशित अचक्रीय ग्राफ (DAG) है जिसमें N शीर्ष और M किनारे हैं। प्रत्येक किनारे का एक पूर्णांक भार (ऋणात्मक हो सकता है) है। दिए गए प्रारंभिक शीर्ष S से सभी अन्य शीर्षों तक के सबसे लंबे पथ की लंबाई ज्ञात करना आवश्यक है। यदि शीर्ष अप्राप्य है, तो "INF" आउटपुट करें। टोपोलॉजिकल सॉर्टिंग (काह्न का एल्गोरिदम) और डायनेमिक प्रोग्रामिंग का उपयोग करें। सीमाएँ: N ≤ 10^5, M ≤ 2*10^5, भार मापांक में ≤ 10^9। यह गारंटी है कि ग्राफ में कोई चक्र नहीं है।

इनपुट प्रारूप

पहली पंक्ति: N M S (1 ≤ N ≤ 100000, 0 ≤ M ≤ 200000, 1 ≤ S ≤ N)। अगली M पंक्तियाँ: u v w (1 ≤ u, v ≤ N, -10^9 ≤ w ≤ 10^9)।

आउटपुट प्रारूप

N पंक्तियाँ आउटपुट करें: प्रत्येक शीर्ष i (1 से N तक) के लिए, S से i तक के सबसे लंबे पथ की लंबाई आउटपुट करें, या यदि शीर्ष अप्राप्य है तो "INF" आउटपुट करें। S से S तक के पथ की लंबाई 0 मानी जाती है।

उदाहरण

उदाहरण 1

इनपुट
4 3 1 1 2 5 1 3 3 2 4 2
आउटपुट
0 5 3 7

उदाहरण 2

इनपुट
3 2 1 1 2 -1 2 3 -2
आउटपुट
0 -1 -3
main.cpp