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

Поділитися
Вставка
  • Опубліковано 27 сер 2024
  • 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...
    ---------------------------------------------------------------------------------------------------------------------------

КОМЕНТАРІ • 210

  • @takeUforward
    @takeUforward  Рік тому +38

    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 3 місяці тому +31

    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 Місяць тому

      Thanks for sharing 👍

  • @princenagar1686
    @princenagar1686 Місяць тому +3

    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 Рік тому +21

    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 Рік тому +11

    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 ^^

  • @malvado8267
    @malvado8267 4 місяці тому +7

    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 2 місяці тому +1

      Can you explain the code for graph creation? I'm not able to understand it

  • @Roshansingh-fe6oh
    @Roshansingh-fe6oh Рік тому +6

    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;

  • @secretvibz6300
    @secretvibz6300 2 місяці тому +3

    Using that parent array was indeed a smart move 😀 !!

  • @tusharbhart7018
    @tusharbhart7018 Рік тому +13

    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;
    }

  • @tatipamularaviteja5245
    @tatipamularaviteja5245 Рік тому +15

    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

  • @mayank_rampuriya
    @mayank_rampuriya Рік тому +8

    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

  • @cinime
    @cinime Рік тому +6

    Understood! Such a wonderful explanation as always, thank you very much!!

  • @nagame859
    @nagame859 10 місяців тому +1

    simple solution again.. thanks Striver. This Graph series feels easier than any other..❤

  • @anshulsharma3137
    @anshulsharma3137 Рік тому +23

    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

  • @uncoding-rohit
    @uncoding-rohit Рік тому +1

    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

  • @manojraj1332
    @manojraj1332 3 місяці тому

    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.

  • @blitzkrieg7453
    @blitzkrieg7453 9 місяців тому +12

    GFG Apparantly have updated the testcases and this solution no longer is getting accepted

    • @at9443
      @at9443 2 місяці тому

      you just have to append the shortest path distance at the beginning of the answer array

  • @sharathkumar8338
    @sharathkumar8338 Рік тому +41

    one major doubt. How can we come up with these kind of solutions on our own???

    • @takeUforward
      @takeUforward  Рік тому +57

      Practice, and practice...

    • @SatyamEdits
      @SatyamEdits Рік тому +13

      @@takeUforward and Observation.....

    • @SatyamEdits
      @SatyamEdits Рік тому +12

      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

  • @aakashbansal6627
    @aakashbansal6627 Рік тому +2

    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 Рік тому +13

    Your Code's output is:
    1 46 11 51
    It's Correct output is:
    1 46 11 51
    Output Difference
    1 46 11 51

  • @AJ-xc3ks
    @AJ-xc3ks 9 місяців тому

    Just love ur way of solution Problem ❤️❤️

  • @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} ;
    }

  • @stith_pragya
    @stith_pragya 8 місяців тому +1

    Thank You So Much for this wonderful video...........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @skt7088
    @skt7088 Рік тому +6

    What if there are multiple shortest path and we have to print all of them? In that case what should we do?

  • @kumarsatyam8527
    @kumarsatyam8527 Рік тому +4

    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)

  • @harshitsen5479
    @harshitsen5479 6 місяців тому

    We basically hashing the node for each updatation in the distances[adjNode]. I guess we can use HashMap too in this case.

  • @nilimsankarbora5911
    @nilimsankarbora5911 8 місяців тому

    Masterpiece Explanation

  • @ng390
    @ng390 3 місяці тому

    Please use a proper compiler which shows output also so it will be more understandable.

  • @ChintuMultiplanetry
    @ChintuMultiplanetry 5 місяців тому +1

    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.

  • @manasranjanmahapatra3729
    @manasranjanmahapatra3729 Рік тому

    Understood! amazing Explanation.

  • @hxveelbadtv
    @hxveelbadtv Рік тому

    Litterly saved me, deserves a subscription if you ask me!!!

  • @after_dark_777
    @after_dark_777 4 місяці тому +1

    TLE on the last test case?

  • @codewithme-ss6zl
    @codewithme-ss6zl 7 місяців тому +5

    I am unable to find this Question on GFG

  • @dilsedhoni9229
    @dilsedhoni9229 Рік тому +1

    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

  • @many987
    @many987 11 місяців тому +1

    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.

  • @vakhariyajay2224
    @vakhariyajay2224 Рік тому

    Thank you very much. You are a genius.

  • @saitejaballa6759
    @saitejaballa6759 Рік тому +5

    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.

  • @muchmunchies43
    @muchmunchies43 16 днів тому

    Understood!

  • @stranger1967
    @stranger1967 Рік тому +1

    how to handle multiple shorest path . This question was asked in my college intership OA of atlassian. PLss tell how to handle ?

  • @shaddyrogue9430
    @shaddyrogue9430 Рік тому +2

    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 Рік тому +1

      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.

  • @UECAshutoshKumar
    @UECAshutoshKumar 10 місяців тому +1

    Thank you sir 🙏

  • @vishnu9134
    @vishnu9134 6 місяців тому

    Huge effort 🤩

  • @DevashishJose
    @DevashishJose 6 місяців тому

    understood, thank you so much.

  • @amanasrani6405
    @amanasrani6405 2 місяці тому

    Understood Bhaiya

  • @kasaiop
    @kasaiop Рік тому +3

    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  Рік тому +23

      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

  • @_hulk748
    @_hulk748 Рік тому

    Understood sir thankyou❤✨🙏🙇‍♂

  • @averylazyandweirdhuman
    @averylazyandweirdhuman 2 місяці тому

    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?

  • @arpitkhanulia7
    @arpitkhanulia7 Рік тому

    we dont have to initialize the whole parent array, just do parent [source] = source ;

  • @user-ct7ci6dh7e
    @user-ct7ci6dh7e 9 місяців тому

    if the weight of both edges is same, we need to handle that based on nodes in Priority Queue

  • @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

  • @luckygamers8068
    @luckygamers8068 Рік тому

    Very much helpful 😍😍

  • @Sumeet_100
    @Sumeet_100 Рік тому

    just amazing !!

  • @gautamsaxena4647
    @gautamsaxena4647 3 місяці тому

    understood bhaiya

  • @user-tk2vg5jt3l
    @user-tk2vg5jt3l 3 місяці тому

    Thank you bhaiya

  • @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.

  • @akshayanagelli5962
    @akshayanagelli5962 2 місяці тому

    what about no path case (-1)?

  • @GungunRamchandani
    @GungunRamchandani Місяць тому

    Understood

  • @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

  • @subhambachar
    @subhambachar Місяць тому

    Understood ❤

  • @raghavendrakalkutaki5175
    @raghavendrakalkutaki5175 4 місяці тому

    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.

  • @The_Shubham_Soni
    @The_Shubham_Soni 11 місяців тому

    UNDERSTOOD.

  • @user-ys4sy3nx1j
    @user-ys4sy3nx1j Рік тому

    adj[it[0]] is a pair, how can we do a push_back to a pair??

  • @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 3 місяці тому

      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

  • @viswanathvuppala4526
    @viswanathvuppala4526 Рік тому

    Sir you forgot the case of returning list of -1s if path's not possible

  • @abdulazeemshaik7112
    @abdulazeemshaik7112 28 днів тому

    understood

  • @-VLaharika
    @-VLaharika Рік тому

    Understood 👍

  • @adityaverma4902
    @adityaverma4902 Рік тому

    why cant we take max priority queue? its giving tle .

  • @dharmenderkumar2841
    @dharmenderkumar2841 Рік тому

    UNDERSTOOD

  • @suryakiran2970
    @suryakiran2970 Рік тому

    Understood❤

  • @priyanshvatsal9791
    @priyanshvatsal9791 Рік тому

    Understood 😇

  • @abhireshray8331
    @abhireshray8331 Рік тому

    nice:) explanation sir

  • @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

  • @azizazmir2159
    @azizazmir2159 Рік тому

    Huge love from south❤

  • @parshchoradia9909
    @parshchoradia9909 Рік тому

    UnderStood Sir!

  • @priyanshusrivastava2145
    @priyanshusrivastava2145 Рік тому +1

    its 3:54 am and busy creating my future😁😄

  • @raghavmanish24
    @raghavmanish24 3 місяці тому

    thanku striver

  • @p38_amankuldeep75
    @p38_amankuldeep75 Рік тому

    understood💙💙💙

  • @AnkurKumar-jx5my
    @AnkurKumar-jx5my Рік тому

    Understood!!

  • @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?

  • @abhinavsidharth1421
    @abhinavsidharth1421 7 місяців тому

    can someone share link of question , it seems to be broken

  • @subodhkasaudhaniitk796
    @subodhkasaudhaniitk796 Рік тому

    Golden❤

  • @lokeshroy3944
    @lokeshroy3944 Рік тому

    amazing

  • @nisargpatel1443
    @nisargpatel1443 2 місяці тому

    Always remember, where you are coming from!

  • @lineshmalkam224
    @lineshmalkam224 Рік тому

    understtooooddddd

  • @kirtipalve1772
    @kirtipalve1772 2 місяці тому

    what if path doesn’t exist?

  • @bhavya8608
    @bhavya8608 Рік тому

    understood!!

  • @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 Рік тому +2

      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

  • @sambhavagarwal5871
    @sambhavagarwal5871 Рік тому +3

    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

  • @thecap7249
    @thecap7249 7 місяців тому

    i was not able to solve it after pausing, what should I do. Am i that much incompetent.

    • @hassanmehboob9078
      @hassanmehboob9078 7 місяців тому

      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

  • @tusarmundhra5560
    @tusarmundhra5560 10 місяців тому

    awesome

  • @aniruddhadas1778
    @aniruddhadas1778 Рік тому

    Please anyone tell me from where could I learn the use of priority queue of min heap in java

  • @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

  • @Invincible2203
    @Invincible2203 2 місяці тому

    showing (SIGABRT) on last 2 test cases, anyone?

  • @satyareddy8671
    @satyareddy8671 Рік тому

    understood
    sir

  • @dailydestress6189
    @dailydestress6189 Рік тому

    Can anyone explain Line 19: Initializing parent array equal to the index value ?? @16:06

    • @rishabhgupta9846
      @rishabhgupta9846 Рік тому

      this is done because we need to stop after node 1 is reached . The condition used inside while(parent[node]!=node) will become false for node 1.

  • @sharathkumar8338
    @sharathkumar8338 Рік тому

    class Solution {
    static class Node {
    int node, distance;
    public Node(int node, int distance) {
    this.node = node;
    this.distance = distance;
    }
    }
    static class Pair implements Comparable{
    int distance, node;
    public Pair(int distance, int node) {
    this.distance = distance;
    this.node = node;
    }
    public int compareTo(Pair o) {
    return this.distance - o.distance;
    }
    }
    public static List shortestPath(int n, int m, int edges[][]) {
    // code here
    ArrayList adjList = new ArrayList();
    for(int i=0;i

  • @rayyansyed2998
    @rayyansyed2998 10 місяців тому

    “understood”

  • @ankitranjan88
    @ankitranjan88 Рік тому