G-35. Print Shortest Path - Dijkstra's Algorithm

  Рет қаралды 194,720

take U forward

take U forward

Күн бұрын

Disclaimer: Please watch Part-1 and Part-2
Part-1: • G-32. Dijkstra's Algor...
Part-2: • G-33. Dijkstra's Algor...
GfG-Problem Link: bit.ly/3SlYvLp
C++/Java/Codes and Notes Link: takeuforward.o...
DP Series: • Striver's Dynamic Prog...
SDE Sheet: takeuforward.o...
Check out our Website for curated resources:
Our Second Channel: / @striver_79
In case you are thinking to buy courses, please check below:
Code "takeuforward" for 15% off at GFG: practice.geeks...
Code "takeuforward" for 20% off on sys-design: get.interviewr...?_aff=takeuforward
Crypto, I use the Wazirx app: wazirx.com/inv...
Take 750 rs free Amazon Stock from me: indmoney.oneli...
Earn 100 rs by making a Grow Account for investing: app.groww.in/v...
Linkedin/Instagram/Telegram: linktr.ee/take...
---------------------------------------------------------------------------------------------------------------------------

Пікірлер: 216
@takeUforward
@takeUforward Жыл бұрын
Let's continue the habit of commenting “understood” if you got the entire video. Please give it a like too, you don't 😞 Do follow me on Instagram: striver_79
@muskangupta5873
@muskangupta5873 4 ай бұрын
This question is updated on GFG , if you look at strivers screen its just asking path but in updated question you need to append the dist[n] also and then reverse
@user-to3jj8lj8h
@user-to3jj8lj8h 2 ай бұрын
yeah, i was confused where's the error in my code , then did this and passed all tetscases. Thanks!!
@subhambachar
@subhambachar 2 ай бұрын
Thanks for sharing 👍
@princenagar1686
@princenagar1686 2 ай бұрын
Solved this code without watching any approach in this video just when he said try it out first, i go and solved it. Thanks Striver.
@harleenkaur7751
@harleenkaur7751 Жыл бұрын
Thanks a lot, striver. Ur content is far better than paid courses. U literally explained us everything in such a depth. Thanks again for all your amazing playlists.
@Anony.musk01
@Anony.musk01 Жыл бұрын
I just love the confidence and the clarity with which you code the solution. I have started to recite the solution similar to your style while coding alone ^^
@Roshansingh-fe6oh
@Roshansingh-fe6oh Жыл бұрын
we can print the path with the help of distance array only (no need of parent array) if(dis[n]==1e9){ return {-1}; } vectorans; int curr_node=n; while(curr_node!=1){ ans.push_back(curr_node); for(auto it:al[curr_node]){ if(dis[it.first]==dis[curr_node]-it.second){ curr_node=it.first; } } } ans.push_back(1); reverse(ans.begin(),ans.end()); return ans;
@wervana
@wervana 8 күн бұрын
Solved this without watching the video. Took 2 hours but was worth it.
@secretvibz6300
@secretvibz6300 3 ай бұрын
Using that parent array was indeed a smart move 😀 !!
@malvado8267
@malvado8267 5 ай бұрын
NOTE Now the question is updated ,we also have to pushback the weight of shortest path. typedef pair pip; vector shortestPath(int n, int m, vector& edges) { vector< pair >adj[n+1]; for(auto &it : edges) { adj[it[0]].push_back({it[1],it[2]}); adj[it[1]].push_back({it[0],it[2]}); } priority_queue< pip, vector , greater< pip > >pq; pq.push({0,1}); vectordist(n+1,1e9); dist[1] = 0; vectorparent(n+1); for(int i = 1;i 0) { auto it = pq.top(); int node = it.second; int dis = it.first; pq.pop(); for(auto &it : adj[node]) { int adjnode = it.first; int edgeweight = it.second; if(dis + edgeweight < dist[adjnode]) { dist[adjnode] = dis + edgeweight; pq.push({dis+edgeweight , adjnode}); parent[adjnode] = node; } } } if(dist[n] == 1e9) return {-1}; vectorpath; int node = n; while(parent[node] != node) { path.push_back(node); node = parent[node]; } path.push_back(1); path.push_back(dist[n]); reverse(path.begin(),path.end()); return path; }
@loveyoubts2002
@loveyoubts2002 4 ай бұрын
it's showing tle error in the last test case
@bhaktisharma9681
@bhaktisharma9681 4 ай бұрын
Thank you so much!!! Was struggling to find my mistake!
@loveyoubts2002
@loveyoubts2002 4 ай бұрын
@@bhaktisharma9681 did u find the solution ?? Then pls share it here 🙏
@vaisakh5802
@vaisakh5802 3 ай бұрын
Can you explain the code for graph creation? I'm not able to understand it
@TON-108
@TON-108 21 сағат бұрын
@@vaisakh5802 Watch initial videos of the series and understand how adjacency list maintains its adjacent nodes and weight
@anshulsharma3137
@anshulsharma3137 Жыл бұрын
Hi Striver, With your hint I was able figure out that this algo is same as we used to print LIS/LCS in DP. Can't think of anyone teaching DSA better than you. Well its not wrong to say that you are the Netflix of DSA xD
@krishanpratap3286
@krishanpratap3286 Жыл бұрын
same same which year?
@chethanrao8827
@chethanrao8827 Жыл бұрын
And I solved it seeing ur hint (print LIS problem in dp)
@anshulsharma3137
@anshulsharma3137 Жыл бұрын
@@krishanpratap3286 2020 passed out lol
@shubhamraj25
@shubhamraj25 Жыл бұрын
So are you looking to switch?
@tusharbhart7018
@tusharbhart7018 Жыл бұрын
Another short approach using Dijkstra's Algorithm (in this we will store the path in priority queue itself just like word ladder II) vector shortestPath(int n, int m, vector& edges) { vector adj[n + 1]; for(auto e : edges) adj[e[0]].push_back({e[1], e[2]}), adj[e[1]].push_back({e[0], e[2]}); vector d(n + 1, INT_MAX); d[1] = 0; priority_queue pq; pq.push({0, {1}}); int minD = INT_MAX; vector ans = {-1}; while(pq.size()) { vector path = pq.top().second; int dis = pq.top().first; pq.pop(); int node = path.back(); if(node == n && minD > dis) minD = dis, ans = path; for(auto ad : adj[node]) { if(d[node] + ad.second < d[ad.first]) { d[ad.first] = d[node] + ad.second; path.push_back(ad.first); pq.push({d[ad.first], path}); path.pop_back(); } } } return ans; }
@mohakhiphop
@mohakhiphop Жыл бұрын
damn nice 🔥
@anuragbanerjee7516
@anuragbanerjee7516 Жыл бұрын
Great soln!!
@vikasbeniwal6825
@vikasbeniwal6825 Жыл бұрын
same approach but tle on tc 4
@uncoding-rohit
@uncoding-rohit Жыл бұрын
Hi sir, I solved this question by own and this is happened because of you. Before your videos graph is like impossible thing for me but now I can solve medium level questions easily
@tatipamularaviteja5245
@tatipamularaviteja5245 Жыл бұрын
after line 20 we should push pair {0,1} initially to priority queue
@aastikofficial6100
@aastikofficial6100 4 ай бұрын
you can but here we push {0,1} as we store in pq and we store in adj list hope you get this
@cinime
@cinime Жыл бұрын
Understood! Such a wonderful explanation as always, thank you very much!!
@mayank_rampuriya
@mayank_rampuriya Жыл бұрын
My approach similar to WordLadder-2, in set along with dist store currentList too... vector shortestPath(int n, int m, vector& edges) { // Code here vector adj[n+1]; for(int i=0; i
@nagame859
@nagame859 10 ай бұрын
simple solution again.. thanks Striver. This Graph series feels easier than any other..❤
@manojraj1332
@manojraj1332 4 ай бұрын
Question is updated in GFG, it is undirected so we need to add u->v and v->u both in the adjacency List. Also Need to add the dist[n] to the path and need to reverse it as the question is asking the dist and path of src to N node.
@sharathkumar8338
@sharathkumar8338 Жыл бұрын
one major doubt. How can we come up with these kind of solutions on our own???
@takeUforward
@takeUforward Жыл бұрын
Practice, and practice...
@SatyamEdits
@SatyamEdits Жыл бұрын
@@takeUforward and Observation.....
@SatyamEdits
@SatyamEdits Жыл бұрын
because if you just keep practicing with closed eyes it would take an eternity to become a good problem solver.....
@sharathkumar8338
@sharathkumar8338 Жыл бұрын
@@SatyamEdits Thank you
@sharathkumar8338
@sharathkumar8338 Жыл бұрын
@@takeUforward Thank you
@blitzkrieg7453
@blitzkrieg7453 10 ай бұрын
GFG Apparantly have updated the testcases and this solution no longer is getting accepted
@at9443
@at9443 3 ай бұрын
you just have to append the shortest path distance at the beginning of the answer array
@stith_pragya
@stith_pragya 9 ай бұрын
Thank You So Much for this wonderful video...........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻
@aakashbansal6627
@aakashbansal6627 Жыл бұрын
TreeSet solution in Java (Just need to override compareTo, equals and hashCode methods of the SortedSet interface): class Pair implements Comparable{ int node, dist; public Pair(int dist, int node){ this.node = node; this.dist = dist; } @Override public boolean equals(Object e){ Pair other = (Pair) e; return node == other.node; } @Override public int hashCode(){ return node; } @Override public int compareTo(Pair p){ if(p.dist == this.dist) return this.node - p.node; return this.dist - p.dist; } } class Solution { static int[] dijkstra(int V, ArrayList graph, int S) { //dist, node -> sort by smaller distance from src. If dist same, then sort by smaller node TreeSet set = new TreeSet(); set.add(new Pair(0, S)); int[] dist = new int[V]; Arrays.fill(dist, Integer.MAX_VALUE); dist[S] = 0; while(!set.isEmpty()){ Pair cur = set.pollFirst(); int src = cur.node, distToSrc = cur.dist; for(ArrayList edge : graph.get(src)){ int dest = edge.get(0), curDist = edge.get(1); if(dist[dest] > distToSrc + curDist){ dist[dest] = distToSrc + curDist; set.add(new Pair(dist[dest], dest)); } } } return dist; } }
@Vikassharma-rq5bh
@Vikassharma-rq5bh Жыл бұрын
Your Code's output is: 1 46 11 51 It's Correct output is: 1 46 11 51 Output Difference 1 46 11 51
@visheshkaran7083
@visheshkaran7083 Жыл бұрын
🤣😂
@techbucks7339
@techbucks7339 11 ай бұрын
We can also use pq of dist and the path we have so far to solve it without needing the parent array. vector shortestPath(int N, int m, vector& edges) { priority_queue pq ; vector dist(N+1,INT_MAX) ; vectoradj[N+1] ; for (int i =0 ; i< m ;i ++) { int u = edges[i][0] ; int v = edges[i][1]; int wt =edges[i][2] ; adj[u].push_back({v,wt}) ; adj[v].push_back({u,wt}) ; } pq.push({0,{1}}) ; //bool flag = false ; while(!pq.empty()) { auto x = pq.top() ; pq.pop() ; vector path = x.second ; int node = path.back(); int dis = x.first ; if (node==N) { // flag = true ; return path ; } for (auto x : adj[node]) { int adjNode = x.first ; int adjDis = x.second ; if (dist[adjNode]>adjDis+dis) { dist[adjNode] = adjDis + dis ; path.push_back(adjNode); pq.push({adjDis + dis, path}); path.pop_back(); } } } return {-1} ; }
@harshitsen5479
@harshitsen5479 7 ай бұрын
We basically hashing the node for each updatation in the distances[adjNode]. I guess we can use HashMap too in this case.
@AJ-xc3ks
@AJ-xc3ks 9 ай бұрын
Just love ur way of solution Problem ❤️❤️
@TON-108
@TON-108 21 сағат бұрын
*Problem Solution
@ng390
@ng390 3 ай бұрын
Please use a proper compiler which shows output also so it will be more understandable.
@kaichang8186
@kaichang8186 6 күн бұрын
understood, thanks for the great video
@skt7088
@skt7088 Жыл бұрын
What if there are multiple shortest path and we have to print all of them? In that case what should we do?
@hxveelbadtv
@hxveelbadtv Жыл бұрын
Litterly saved me, deserves a subscription if you ask me!!!
@kumarsatyam8527
@kumarsatyam8527 Жыл бұрын
what if we need to find all the shortest paths from src to destination? (eg if there are 3 paths from src->dest with total wt=5,how to get all three)
@nilimsankarbora5911
@nilimsankarbora5911 8 ай бұрын
Masterpiece Explanation
@muchmunchies43
@muchmunchies43 Ай бұрын
Understood!
@manasranjanmahapatra3729
@manasranjanmahapatra3729 Жыл бұрын
Understood! amazing Explanation.
@ChintuMultiplanetry
@ChintuMultiplanetry 6 ай бұрын
hey striver you forget to push the dist[n] in path after line 46 , if i will not push then it gives me one less path(node) in vector.
@dilsedhoni9229
@dilsedhoni9229 Жыл бұрын
Was able to come up with the solution without watching the video. Here's my implementation : vector shortestPath(int n, int m, vector& edges) { // Code here vectoradj[n+1]; for(int i = 0 ; i < edges.size() ; i++){ adj[edges[i][0]].push_back({edges[i][1],edges[i][2]}); adj[edges[i][1]].push_back({edges[i][0],edges[i][2]}); } priority_queue pq; pq.push({0,{1,{1}}}); vectordist(n+1,INT_MAX); dist[1]=0; while(!pq.empty()){ pair ki=pq.top(); pq.pop(); int dis=ki.first; int k=ki.second.first; vectorvec=ki.second.second; vectorvy=vec; if(k==n) return vec; for(int i = 0 ; i < adj[k].size() ; i++){ if(dis+adj[k][i][1]
@vikasbeniwal6825
@vikasbeniwal6825 Жыл бұрын
almost same type of solution but got tle on case 4
@GungunRamchandani
@GungunRamchandani 2 ай бұрын
Understood
@vakhariyajay2224
@vakhariyajay2224 Жыл бұрын
Thank you very much. You are a genius.
@subhambachar
@subhambachar 2 ай бұрын
Understood ❤
@UECAshutoshKumar
@UECAshutoshKumar 11 ай бұрын
Thank you sir 🙏
@codewithme-ss6zl
@codewithme-ss6zl 8 ай бұрын
I am unable to find this Question on GFG
@ooofrg4492
@ooofrg4492 Ай бұрын
Same
@_hulk748
@_hulk748 Жыл бұрын
Understood sir thankyou❤✨🙏🙇‍♂
@amanasrani6405
@amanasrani6405 2 ай бұрын
Understood Bhaiya
@The_Shubham_Soni
@The_Shubham_Soni Жыл бұрын
UNDERSTOOD.
@-VLaharika
@-VLaharika Жыл бұрын
Understood 👍
@vishnu9134
@vishnu9134 6 ай бұрын
Huge effort 🤩
@kasaiop
@kasaiop Жыл бұрын
Understood Suggestion:- ek sath itne sare video mat upload karo channel ke reach Kam hoti hai Ho sake to ek ek hour ke video schedule kardo And amazing approach striver Bhai 😀 Edit:- mai galat tha #keep_striving
@takeUforward
@takeUforward Жыл бұрын
Areh pdhai ki channel ki reach hoti v nai h, word of mouth pe hi chalta h
@smile8510
@smile8510 Жыл бұрын
@@takeUforward true
@abdulsakibshekhayyub3498
@abdulsakibshekhayyub3498 Жыл бұрын
@@takeUforward still if u upload 1 or 2 video daily that will make us consistent
@many987
@many987 Жыл бұрын
hey Striver bhaiya, i have a doubt that instead of storing the parents, can't we do this. if anyone else can help , then please. int node = n; while(node != 1){ for(auto it : adj[node]){ int adj_node = it.first; int adj_wt = it.second; if(dist[node] == dist[adj_node] + adj_wt){ ans.push_back(adj_node); node = adj_node; } } } intution is simple that whose adjNode's distance + weight gives the node's distance will be the parent node.
@DevashishJose
@DevashishJose 7 ай бұрын
understood, thank you so much.
@abdulnisar7716
@abdulnisar7716 11 күн бұрын
My Attempt -> vector shortestPath(int n, int m, vector& edges) { vector adjList(n+1); vector distances(n+1,{INT_MAX,vector{}}); distances[1] = {0,{1}}; for(int i=0;i distances[node].first) continue; vector path = distances[node].second; for(auto pair : adjList[node]){ int adjNode = pair.first; int d = pair.second; if(distances[adjNode].first > d + dist) { distances[adjNode].first = d + dist; vector newPath = path; newPath.push_back(adjNode); distances[adjNode].second = newPath; pq.push({d + dist, adjNode}); } } } vector result; if(distances[n].first == INT_MAX) return {-1}; else { result.push_back(distances[n].first); for(auto node : distances[n].second) result.push_back(node); return result; } }
@saikrishna872
@saikrishna872 Жыл бұрын
UNDERSTOOD
@after_dark_777
@after_dark_777 5 ай бұрын
TLE on the last test case?
@Sumeet_100
@Sumeet_100 Жыл бұрын
just amazing !!
@stranger1967
@stranger1967 Жыл бұрын
how to handle multiple shorest path . This question was asked in my college intership OA of atlassian. PLss tell how to handle ?
@priyanshvatsal9791
@priyanshvatsal9791 Жыл бұрын
Understood 😇
@abdulazeemshaik7112
@abdulazeemshaik7112 Ай бұрын
understood
@luckygamers8068
@luckygamers8068 Жыл бұрын
Very much helpful 😍😍
@parshchoradia9909
@parshchoradia9909 Жыл бұрын
UnderStood Sir!
@Learnprogramming-q7f
@Learnprogramming-q7f 4 ай бұрын
Thank you bhaiya
@gautamsaxena4647
@gautamsaxena4647 4 ай бұрын
understood bhaiya
@sambhavagarwal5871
@sambhavagarwal5871 Жыл бұрын
understood Even if my result and expected result is same its not passing test case. Test case number - 63 pin this comment so everyone can save their time Your Code's output is: 1 46 11 51 It's Correct output is: 1 46 11 51 Output Difference 1 46 11 51
@smile8510
@smile8510 Жыл бұрын
same here
@takeUforward
@takeUforward Жыл бұрын
glitch hai, ab working
@AravinthRavichandran-n1k
@AravinthRavichandran-n1k 9 ай бұрын
if the weight of both edges is same, we need to handle that based on nodes in Priority Queue
@saitejaballa6759
@saitejaballa6759 Жыл бұрын
What if there are two shortest path 1->2->4->5 and 1->3->5 with the same dist value , will it print 1->3->5?
@yaswanthkosuru
@yaswanthkosuru Жыл бұрын
No it's based on graph If you want smallest path (or) all paths then store parent=list of set of values Ex:parent=[0,{1, 2}] dist=[0,1] Again if we get dist 1 of index 1 from other path then simply add that node to parent [1] then apply dfs not while loop.
@rishabhraj8233
@rishabhraj8233 Жыл бұрын
hey striver , I solved this problem using a different approach where my pq consists of distance and vector(containing path until now) runs just fine class Solution { public: vector shortestPath(int n, int m, vector& edges) { // Code here vectorans; vectoradj[n+1]; for(int i=0;i
@p38_amankuldeep75
@p38_amankuldeep75 Жыл бұрын
understood💙💙💙
@subodhkasaudhaniitk796
@subodhkasaudhaniitk796 Жыл бұрын
Golden❤
@arpitkhanulia7
@arpitkhanulia7 Жыл бұрын
we dont have to initialize the whole parent array, just do parent [source] = source ;
@lineshmalkam224
@lineshmalkam224 Жыл бұрын
understtooooddddd
@viswanathvuppala4526
@viswanathvuppala4526 Жыл бұрын
Sir you forgot the case of returning list of -1s if path's not possible
@shaddyrogue9430
@shaddyrogue9430 Жыл бұрын
Hey instead of using extra array of parent can't we store a Pair in the dist array itself and do the backtrack from there. This way we can save some space.
@kushaldas1703
@kushaldas1703 Жыл бұрын
#tuf and take forward for crowdwork...#leetcode more solution needed
@sypher4735
@sypher4735 Жыл бұрын
How can it have a better time complexity?, If observed closely the total number of integers will be equal, so I don't think it's better from any angle.
@HONOREDONE-hk7pt
@HONOREDONE-hk7pt Жыл бұрын
lol, pair of size n is nothing but two arrays of size n clubbed together.
@abhireshray8331
@abhireshray8331 Жыл бұрын
nice:) explanation sir
@bhavya8608
@bhavya8608 Жыл бұрын
understood!!
@priyanshusrivastava2145
@priyanshusrivastava2145 Жыл бұрын
its 3:54 am and busy creating my future😁😄
@lokeshroy3944
@lokeshroy3944 Жыл бұрын
amazing
@sahelidebnath5085
@sahelidebnath5085 Жыл бұрын
As the note not yet updated. Just for resource : java code public static List shortestPath(int n, int m, int edges[][]) { ArrayList adj = new ArrayList(); for(int i = 0;i
@azizazmir2159
@azizazmir2159 Жыл бұрын
Huge love from south❤
@tusarmundhra5560
@tusarmundhra5560 10 ай бұрын
awesome
@averylazyandweirdhuman
@averylazyandweirdhuman 3 ай бұрын
Hi striver, can the datatype of distance array be a class which stores node distance and parent ? so that we will not take two separate arrays?
@satyareddy8671
@satyareddy8671 Жыл бұрын
understood sir
@akshayanagelli5962
@akshayanagelli5962 2 ай бұрын
what about no path case (-1)?
@nisargpatel1443
@nisargpatel1443 3 ай бұрын
Always remember, where you are coming from!
@NANUVALAADITHYA
@NANUVALAADITHYA Жыл бұрын
adj[it[0]] is a pair, how can we do a push_back to a pair??
@tusharkumarroy-tj2qg
@tusharkumarroy-tj2qg 7 күн бұрын
understood and busted
@raghavendrakalkutaki5175
@raghavendrakalkutaki5175 5 ай бұрын
why we need to push 5 at the end to run this code on gfg vector shortestPath(int n, int m, vector& edges) { vector adj[n+1]; for(auto it:edges){ adj[it[0]].push_back({it[1],it[2]}); adj[it[1]].push_back({it[0],it[2]}); } priority_queue pq; vector dist(n+1,1e9); vector parent(n+1); for(int i=1;i
@tasneemayham974
@tasneemayham974 4 ай бұрын
Because they asked for the shortest distance value as well. So, they want you to first give them the shortest distance as the first index then the graph path.
@isheep9025
@isheep9025 Жыл бұрын
One doubt! Why we need to initialise parent[ ] with idx themselves? does it help in anyway? my all test cases were passed without doing that (I did on Java ) because if the given graph is a NULL graph then each node is a parent of itself,it doesn't make a diiference here since we only want the path if initial vertex and final vertex is connected,but at the end of the program doing this yields us the correct parent array no matter weather path exists or not
@HONOREDONE-hk7pt
@HONOREDONE-hk7pt Жыл бұрын
doesn't matter what you store at the parent caue when you will get the path it will automatically get updated with the new parents.
@adityaverma4902
@adityaverma4902 Жыл бұрын
why cant we take max priority queue? its giving tle .
@pihus3498
@pihus3498 Жыл бұрын
understood :)
@karthik53r35
@karthik53r35 Жыл бұрын
For same code but using unordered map insted of vector for getting path is giving me tle on 7th testcase itself😮!! Can anyone tell me the reason
@loveyoubts2002
@loveyoubts2002 4 ай бұрын
I've understood the algo and the code but it's showing TLE error in gfg for last 2 cases, both with priority_queue and set...anyone else having same problem as me ?
@tasneemayham974
@tasneemayham974 4 ай бұрын
Yes, I solved it alone and got TLE using Java. But when I solved it using C++ it ran well!!
@RahulGuptaa29
@RahulGuptaa29 Жыл бұрын
One doubt! Why we need to initialise parent[ ] with idx themselves? does it help in anyway? my all test cases were passed without doing that (I did on Java )
@isheep9025
@isheep9025 Жыл бұрын
because if the given graph is a NULL graph then each node is a parent of itself,it doesn't make a diiference here since we only want the path if initial vertex and final vertex is connected,but at the end of the program doing this yields us the correct parent array no matter weather path exists or not
@rayyansyed2998
@rayyansyed2998 10 ай бұрын
“understood”
@abhinavsidharth1421
@abhinavsidharth1421 7 ай бұрын
can someone share link of question , it seems to be broken
@brajeshmohanty2558
@brajeshmohanty2558 Жыл бұрын
Where can we find the java code for this video
@mohdkhaleeq7468
@mohdkhaleeq7468 Жыл бұрын
i am not able to write code by myself what to do?
@ankitranjan88
@ankitranjan88 Жыл бұрын
@IdiotOfftheInternet
@IdiotOfftheInternet Жыл бұрын
In Java code, you have added new Pair(edges[i][1], edges[i][2]) which I am not able to understand. Because we are storing data in PQ as {dist, node} then it should be something like Pair(edges[i][2], edges[i][1]). Can someone please help me understand this
@umeshkaushik710
@umeshkaushik710 Жыл бұрын
You can refer to this code, passing all the test cases (Java Correct Solution) class Solution { public static List shortestPath(int n, int m, int edges[][]) { ArrayList adj = new ArrayList(); for(int i=0;i
@SP-bx3ql
@SP-bx3ql Жыл бұрын
that time he stores value in adjacency list to make it graph. so edges([i][0]).add(edges[i][1],edges[i][2]); it means from [i][0] to [i][1] there is a edge and weight is [i][2]
@devabakare357
@devabakare357 Жыл бұрын
class Pair implements Comparable{ int src; int wt; public Pair(int src, int wt){ this.src = src; this.wt = wt; } public int compareTo(Pair pair){ return this.wt - pair.wt; } } class Node{ int dest; int cost; public Node(int dest, int cost){ this.dest = dest; this.cost = cost; } } class Solution { public static List shortestPath(int n, int m, int edges[][]) { int memo[] = new int[n+1]; int distance[] = new int[n+1]; PriorityQueue pq = new PriorityQueue(); ArrayList graph = new ArrayList(); for(int i = 0; i
@Invincible2203
@Invincible2203 3 ай бұрын
showing (SIGABRT) on last 2 test cases, anyone?
@saagerbabung5652
@saagerbabung5652 Жыл бұрын
am i missing something? since its undirected graph there definitely exists a path right? then y print (-1)
@gamerversez5372
@gamerversez5372 Жыл бұрын
What if the Node is Unreachable ?
@saagerbabung5652
@saagerbabung5652 Жыл бұрын
@@gamerversez5372 undirected graph means it's reachable every where. Also there is only one component
@thecap7249
@thecap7249 8 ай бұрын
i was not able to solve it after pausing, what should I do. Am i that much incompetent.
@hassanmehboob9078
@hassanmehboob9078 8 ай бұрын
Would you please send me problem link
@loveyoubts2002
@loveyoubts2002 4 ай бұрын
i can feel u bro, i'm also feeling same but only solution is practice
@harshalgarg1676
@harshalgarg1676 Ай бұрын
US
@aniruddhadas1778
@aniruddhadas1778 Жыл бұрын
Please anyone tell me from where could I learn the use of priority queue of min heap in java
@vijayvardhan2698
@vijayvardhan2698 Жыл бұрын
gfg
G-36. Shortest Distance in a Binary Maze
23:42
take U forward
Рет қаралды 142 М.
这三姐弟太会藏了!#小丑#天使#路飞#家庭#搞笑
00:24
家庭搞笑日记
Рет қаралды 123 МЛН
The hidden beauty of the A* algorithm
19:22
Polylog
Рет қаралды 862 М.
Kosaraju's Algorithm | Strongly Connected Components
6:11
Basics Strong
Рет қаралды 9 М.
How Dijkstra's Algorithm Works
8:31
Spanning Tree
Рет қаралды 1,3 МЛН
G-27. Shortest Path in Directed Acyclic Graph - Topological Sort
26:36
take U forward
Рет қаралды 218 М.
3.6 Dijkstra Algorithm - Single Source Shortest Path - Greedy Method
18:35
A* Pathfinding Algorithm (Coding Challenge 51 - Part 1)
48:42
The Coding Train
Рет қаралды 3,3 МЛН
这三姐弟太会藏了!#小丑#天使#路飞#家庭#搞笑
00:24
家庭搞笑日记
Рет қаралды 123 МЛН