G-32. Dijkstra's Algorithm - Using Priority Queue - C++ and Java - Part 1

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ก.พ. 2025
  • GfG-Problem Link: bit.ly/3KeZZ7j
    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...
    ---------------------------------------------------------------------------------------------------------------------------

ความคิดเห็น • 332

  • @takeUforward
    @takeUforward  2 ปีที่แล้ว +116

    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

    • @TrndxAtomic
      @TrndxAtomic 2 ปีที่แล้ว

      @Abhay Bisht in C++ the default priority queue is max heap...the syntax used above is for creating min-heap.

    • @sukhjattana5887
      @sukhjattana5887 2 ปีที่แล้ว

      understood (Y) (Y)
      ....u forgot to pin this :p

    • @namratam1522
      @namratam1522 ปีที่แล้ว

      Why dont you use visited array?

    • @imPriyansh77
      @imPriyansh77 8 หลายเดือนก่อน

      understood

    • @KiranKumar-sb3ti
      @KiranKumar-sb3ti 8 หลายเดือนก่อน

      understood

  • @awesome_latest_virals6098
    @awesome_latest_virals6098 ปีที่แล้ว +93

    15:26 instead of assigning value using loop , we can just write vector dist ( V , INT_MAX);

    • @Cools74
      @Cools74 9 หลายเดือนก่อน +11

      Both are same time complexity:)

    • @imPriyansh77
      @imPriyansh77 8 หลายเดือนก่อน +9

      yes, for more compactness of code, we can write :)

    • @princenagar1686
      @princenagar1686 6 หลายเดือนก่อน +7

      There is a problem in that is when whe check ( currentNodeDistance + distance_till_now < current NodeDistance then Assignment new shortest distance) in this line if we sum in INT_MAX with some positive value then it will become NEGATIVE and thus evaluates as Small instead of Big.

  • @venkat.sairam
    @venkat.sairam ปีที่แล้ว +9

    🎯 Key Takeaways for quick navigation:
    00:02 📚 *Introduction to Dijkstra's Algorithm*
    - Dijkstra's Algorithm is crucial for solving shortest path problems.
    - It starts from a source node and finds the shortest distances to all other nodes.
    02:35 📖 *Implementation Methods*
    - Dijkstra's Algorithm can be implemented using Priority Queue, Set, or Queue data structures.
    - Priority Queue and Set are more efficient, with Set being the fastest.
    03:56 🚀 *Importance of Watching All Videos*
    - Emphasizes the importance of watching all videos to grasp the concept thoroughly.
    - Mentions that problem-solving will follow once the concept is clear.
    04:09 📊 *Representing the Graph*
    - Explains how to represent a graph using an adjacency list with pairs (node, weight).
    - Provides an example of storing adjacency information.
    06:04 🌐 *Initial Configuration*
    - Describes the initial setup, including the minimum heap data structure and a distance array.
    - Initializes the source node with a distance of 0.
    06:19 ⏩ *Iteration Process*
    - Explains the iteration process, similar to BFS, where nodes are processed in order of minimum distance.
    - Highlights the importance of discovering shorter distances during the iteration.
    11:17 🧐 *Handling Adjacent Nodes*
    - Details how to handle adjacent nodes and update their distances.
    - Demonstrates the process of selecting the best path to each adjacent node.
    18:03 ❌ *Limitation: Negative Weight Cycles*
    - Discusses the limitation of Dijkstra's Algorithm when dealing with negative weight edges or cycles.
    - Explains why negative weights can lead to an infinite loop.
    21:02 ⏰ *Time Complexity*
    - Mentions the time complexity of Dijkstra's Algorithm as O(E log V), where E is the number of edges and V is the number of nodes.
    - Teases upcoming explanations about priority queues and set data structures.
    Made with HARPA AI

  • @ideepakpandey
    @ideepakpandey 2 ปีที่แล้ว +138

    Wow, 3 videos on Dijkstra. We will not find such detailed videos even in expensive premium courses.

    • @takeUforward
      @takeUforward  2 ปีที่แล้ว +141

      It will be more than 3, around 10. Including problems 🫡 Give me a day or two. All will be out.

    • @ideepakpandey
      @ideepakpandey 2 ปีที่แล้ว +21

      @@takeUforward great🔥🙌. You are literally god for those students like me who cannot afford premium courses.

    • @sharathkumar8338
      @sharathkumar8338 2 ปีที่แล้ว +17

      @@ideepakpandey even premium courses are not this worth. personal experience.

    • @codingvibesofficial
      @codingvibesofficial 2 ปีที่แล้ว +2

      @take u forward That's our striver bhaiya

  • @visase2036
    @visase2036 2 ปีที่แล้ว +81

    Ahh Finally! Here it goes ... Happy to see you back after many days ,was waiting for the new video graph playlist. Thanks a lot for your immense efforts Striver.
    Good to see you in a new look! Virat Kohli of DSA! 😀

  • @suheabkhan2546
    @suheabkhan2546 2 ปีที่แล้ว +14

    Learning Dijkshtra algo for the first time... And understand it in the one watch was like unbelievable.. #striver op

  • @CodeMode9313
    @CodeMode9313 ปีที่แล้ว +6

    Habibi ye bhi kamal video banti ... bahut accha bahut accha

  • @nikhilraj9900
    @nikhilraj9900 2 ปีที่แล้ว +3

    I have already solved more than 15 problems on Dijextra but i can't resist myself to watch whole video.

  • @shivyanshgarg2641
    @shivyanshgarg2641 ปีที่แล้ว +22

    i like how i can write the code myself after being 5 - 6 mins in the video.

  • @priyanshugupta4875
    @priyanshugupta4875 3 หลายเดือนก่อน +10

    if someone is having difficulty in getting the intuition, watch abdul sari sir once then come here for implementation.

    • @Tbm4545
      @Tbm4545 29 วันที่ผ่านมา

      Abdul bari*

  • @Moch117
    @Moch117 ปีที่แล้ว +6

    Thank you!
    I implemented it on my own and it worked without storing the distance on the priority queue. I only stored the nodes themselves. I also used a Pair class to store (dest,weight)

  • @abhinavhadole6516
    @abhinavhadole6516 2 ปีที่แล้ว +9

    Jai Dijkstra's Algorithm 🙇🏼🙏🏻

  • @harikareddy-o4f
    @harikareddy-o4f 11 หลายเดือนก่อน

    Striver bhaiya cant thank you enough...heard the concept and coded it on one go all credits to you🙏

  • @TrendyGamer007
    @TrendyGamer007 2 ปีที่แล้ว +4

    loving this playlist 3000❣

  • @1qwertyuiop1000
    @1qwertyuiop1000 ปีที่แล้ว +3

    One suggestion in java code.. Instead of doing 2 operations I.E. peek() and remove() at line number 81,82& 83, we can do one operation pop().. Just an FYI for other java codes... Happy coding.. 👍

  • @therangeplus
    @therangeplus 6 หลายเดือนก่อน

    thank you for explaining the stuff so well. Every other youtuber I have watched didnt help much but u explain the concept so well and you do the code,

  • @rahulprasad3575
    @rahulprasad3575 2 ปีที่แล้ว +1

    bro this is the exact thing i was searching today

  • @sanketmudholkar2889
    @sanketmudholkar2889 2 ปีที่แล้ว +2

    This series is far better than any of the netflix original ones

  • @amanasrani6405
    @amanasrani6405 7 หลายเดือนก่อน

    understood, we are so lucky to have u striver

  • @johnj171
    @johnj171 7 หลายเดือนก่อน

    love you man I will watch every second!!! love you for the dedication and series you have contributed for the community

  • @chiragsawarn9548
    @chiragsawarn9548 ปีที่แล้ว +4

    In this implementation it was extremely difficult to figure out the complexity.
    When we use a visited array, it become clear that a node may be queued multiple times but its neighbors will only be processed once.
    Because the first occurrence of duplicate node in the queue will have the lightest path and mark the node as visited. Eliminating the need for redundancies to be processed.

  • @coder6109
    @coder6109 9 หลายเดือนก่อน +2

    IMP: when to apply -> when we have weighted undirected graph , TC -> ElogV as at max our heap has V elements

  • @raghavmanish24
    @raghavmanish24 9 หลายเดือนก่อน

    thanku striver .....again i have started this series from where i have stoped due to some reasons ,,,,,i'm sure this time i will complete this

  • @SonuKumar-ed2bo
    @SonuKumar-ed2bo 2 ปีที่แล้ว +1

    17:20 We need to put the node in queue for same distanse too. So we need to put a equality sign over there

  • @ShahNawaz-cx3pi
    @ShahNawaz-cx3pi 2 หลายเดือนก่อน +1

    ** We can use simple priority_queue i.e. there is no need to have pair inside PQ , we can take distance from distance array itself.
    After all there are various ways to implement so , we can do both:
    my code is here
    vector dijkstra(vector &adj, int src) {
    int n = adj.size();
    vectordist(n,1e9);
    priority_queue pq;
    pq.push(src);
    dist[src]=0;
    while(!pq.empty()){
    int node = pq.top();
    pq.pop();
    for(auto it:adj[node]){
    int adjNode = it.first;
    int weight = it.second;
    if(dist[adjNode]>dist[node]+weight){
    dist[adjNode]=dist[node]+weight;
    pq.push(adjNode);
    }
    }
    }
    return dist;


    }

    • @Harsh_code_382
      @Harsh_code_382 4 วันที่ผ่านมา

      your code is not implementing djkstra because your PQ is sorting nodes not on bases of shortest distance first, So, basically your code is just implementing BFS, distance also stored with Node in PQ so, we can process the node with shortest distance first 👍

  • @ashutoshpatel2048
    @ashutoshpatel2048 6 หลายเดือนก่อน

    this stuff is really code . i solved qustn on leetcode based is topic all by myself in 40 min.

  • @hashcodez757
    @hashcodez757 ปีที่แล้ว

    Undestood BHAIYA!!
    thanks alot

  • @unfamousgaayak4838
    @unfamousgaayak4838 7 หลายเดือนก่อน

    U r doing a great job man . Salute to you ..

  • @dhanashreegodase4445
    @dhanashreegodase4445 ปีที่แล้ว +1

    You are a Masterpeice!!

  • @harshnaruto3122
    @harshnaruto3122 2 ปีที่แล้ว +1

    You are hero for us

  • @jambajuice07
    @jambajuice07 2 ปีที่แล้ว

    half way done !
    wont stop

  • @apmotivationakashparmar722
    @apmotivationakashparmar722 2 หลายเดือนก่อน

    Thank you so much Striver !❤

  • @deveshsharma-u2l
    @deveshsharma-u2l 26 วันที่ผ่านมา

    understood Raj Bhaiya

  • @muskanagrawal7428
    @muskanagrawal7428 6 หลายเดือนก่อน +2

    16:30 sir, in vectoradj[ ] given in ques, inner vector should store int, not pair how does it work for it[0] or it[1] in code, as it should have been vector

  • @psionl0
    @psionl0 ปีที่แล้ว

    Understood. In fact, I was able to solve leetCode 1514. Path with Maximum Probability without assistance after seeing this video.

    • @TheRandomPerson49
      @TheRandomPerson49 7 หลายเดือนก่อน

      Thanks bro for telling, I also tried and solution accepted. 👍🏻

  • @harshps1317
    @harshps1317 2 หลายเดือนก่อน

    Actually, you can make it as optimal as using a set; just change one, like after pq. pop(), check if dis > dist[node], and then continue (which means skip it). This skip checking {10,5} and save time .

  • @haha44261
    @haha44261 7 หลายเดือนก่อน +1

    striver bhai...dadhi thodi gahri(deep) katt gayi hai side se...😅...this video is greattt.

  • @vakhariyajay2224
    @vakhariyajay2224 2 ปีที่แล้ว +1

    Thank you very much. You are a genius.

  • @dinushachathuranga7657
    @dinushachathuranga7657 ปีที่แล้ว

    excellent explanation. Lucky to find your channel.❤

  • @mriduljain6809
    @mriduljain6809 ปีที่แล้ว

    Understood Bhaiya😍😍

  • @A52VarshaSanga-pr7km
    @A52VarshaSanga-pr7km 7 หลายเดือนก่อน

    Thank you so much ..your videos give me hope that I can do better !!

  • @sambhavagarwal5871
    @sambhavagarwal5871 2 ปีที่แล้ว

    understand Thanks a lot for your immense efforts Striver.

  • @ruchitjoshi6889
    @ruchitjoshi6889 ปีที่แล้ว

    Why the priority queue has been initialized with pair? we can simply take 2-d vector in the pq

  • @23cash86
    @23cash86 ปีที่แล้ว

    11:51 10,5 will also be in min-heap of d,n

  • @rahuljain224
    @rahuljain224 ปีที่แล้ว

    Superb explanation

  • @letstrycoding6389
    @letstrycoding6389 2 ปีที่แล้ว +2

    Can someone explain ..initialization of priority queue ...first line in the code...why use greater...??

    • @takeUforward
      @takeUforward  2 ปีที่แล้ว +8

      PQ by default works as max heap, with that initialisation it works as min heap

  • @SWEcodes
    @SWEcodes 2 ปีที่แล้ว +4

    I guess if you will not check that the if dis != dist[node] we do not have to process this node as it is already processed. Because there can be same nodes with different distance in priority queue.
    The answer is still corrects, but i guess with your code it might lee to a worst of V.E

  • @UECAshutoshKumar
    @UECAshutoshKumar ปีที่แล้ว +1

    Thank you sir 😊

  • @kaichang8186
    @kaichang8186 5 หลายเดือนก่อน

    understood, thanks for the great video

  • @cinime
    @cinime 2 ปีที่แล้ว +1

    Understood! Super fantastic explanation as always, thank you very much!!

  • @AYUSHKUMAR-xj4wc
    @AYUSHKUMAR-xj4wc ปีที่แล้ว

    Awesome Explanation 👍👌

  • @GopiPusuluri-t4b
    @GopiPusuluri-t4b 6 หลายเดือนก่อน

    it is better to insert in distance array when we pop out from queue, because queue already stored minimum distance with node in front

  • @Tbm4545
    @Tbm4545 29 วันที่ผ่านมา

    If u r coming from 28 video Shortest lath UG , u can easily get this only difference is we have used Prique insted of normal queue

  • @scaffgaming
    @scaffgaming 9 หลายเดือนก่อน +2

    There is a video number 28 we do the same algorithm I don't know why time complexity is better here because in that video 28 we did the shortest path from SRC with unit weight but weight is not matter here we are just adding the weight so what's the difference between exactly this algorithm or number 28 video alogrithm we exactly doing the same think

  • @giit85
    @giit85 2 ปีที่แล้ว

    Great continue this series

  • @_hulk748
    @_hulk748 ปีที่แล้ว

    Thankyou sir understood🙇‍♂️🙏❤

  • @rishabhagarwal8049
    @rishabhagarwal8049 2 ปีที่แล้ว

    Understood Sir, Thank you very much

  • @sagarvk18
    @sagarvk18 ปีที่แล้ว

    Love and Respect!

  • @deepalirathod4929
    @deepalirathod4929 6 หลายเดือนก่อน

    You are legend !

  • @sunamkundal4841
    @sunamkundal4841 3 หลายเดือนก่อน

    This is gold

  • @deepakgoyal1643
    @deepakgoyal1643 ปีที่แล้ว

    what is the need of taking priority queue as in pair , i think there is no need of pair , we can simply take int

  • @banothutharun2743
    @banothutharun2743 6 หลายเดือนก่อน

    understood brother.❤

  • @AmanKumar-xw5bs
    @AmanKumar-xw5bs 8 หลายเดือนก่อน +2

    Good explanation BUT Dijkstras algo is somewhat similar to this but little different, In this video you are visiting already visited vertices again which is just unncessary(as there are no negative edge cycles). Instead you can just make a visited array and don't visited vertices those are marked visited. Thats how the actual Dijkstras algorithm works.

    • @divyachauhan363
      @divyachauhan363 3 หลายเดือนก่อน

      exactly

    • @tejasparse9053
      @tejasparse9053 3 หลายเดือนก่อน

      Exactly. The algo he coded is working for negative weights (not cycles) because we are visiting multiple times. Took me an hour to realize this is not the correct dijkstra.

    • @Harsh_code_382
      @Harsh_code_382 4 วันที่ผ่านมา

      This code is correct Dijkstra and btw Dijkstra’s algorithm does not require a visited array because the priority queue (min-heap) ensures that each node is processed in order of increasing shortest distance, so we never visit the same node again we can just update the distance of visited node and only then inserting it in PQ. And that's how real Dijkstra Works

    • @Harsh_code_382
      @Harsh_code_382 4 วันที่ผ่านมา

      @@tejasparse9053 Dijkstra's Algorithm Does Not Work with Negative Weights. Even if it visits nodes multiple times, Dijkstra still cannot correctly handle negative weights (even without cycles).

  • @Xp-Sam
    @Xp-Sam ปีที่แล้ว +2

    Please answer my question
    I have read at many places that, dijkstra cannot work for negative edge weights
    but I tested this algorithm for many negative edge directed graphs, and it is working fine
    Still I am not able to find any example of directed graph with negative edge weight where this will fail
    vector dijkstra(int V, vector adj[], int S)
    {
    vector distance(V, 1e9);
    distance[S] = 0;
    priority_queue pq;
    pq.push({0, S});
    while(!pq.empty()){
    auto p = pq.top();pq.pop();
    int node = p.second;
    int dist = p.first;
    for(auto &x : adj[node]){
    int newDist = dist + x[1];
    if(newDist < distance[x[0]]){
    pq.push({newDist, x[0]});
    distance[x[0]] = newDist;
    }
    }
    }
    return distance;
    }
    , so why its written everywhere that it wont work for negative edge weight graph
    Either the above is not the actual dijkstra code, or they are wrong

    • @mewerchewer7503
      @mewerchewer7503 8 หลายเดือนก่อน +1

      There are many variants of Dijkstra. This variant allows for re-entrance of a node which allows for possibilities of further relaxation which is what happens in the case of negative edge weights but has TC of exponential (Goes from being a greedy approach to almost search the entire edge space multiple times), which often leads to TLE in contests or some harder problems. Besides, if a problem allows for negative edge weights, then there could be a possibility of a negative cycle in one of the test cases, where Dijkstra will simply fail. That is why, nobody uses Dijkstra if the question mentions the negative edge weights (unless the constraints of the graph are extremely small) and thus, most codes have implementation allowing for processing of node at maximum of one time (then it would be marked as processed or visited)

    • @Learner_45
      @Learner_45 6 หลายเดือนก่อน

      @@mewerchewer7503 does that(the variant which fails for negative edges) use visited array or something like that?

  • @amitp277
    @amitp277 ปีที่แล้ว

    great work 👏

  • @maximelebreux2914
    @maximelebreux2914 10 หลายเดือนก่อน

    Good teaching

  • @supratimnayek2776
    @supratimnayek2776 2 ปีที่แล้ว

    Amazing explanation

  • @cursed_nerd
    @cursed_nerd ปีที่แล้ว

    New beard looking good

  • @SushmithaSathyanarayanan-u4l
    @SushmithaSathyanarayanan-u4l 9 หลายเดือนก่อน

    This Dijkstra's algorithm is similar to Shortest Path in Undirected Graph with Unit Weights(previous video), only difference is that we don't keep track of the distance in the queue, rather we take it from distance array.I wonder if this makes a difference in the algorithm

  • @robertnant1264
    @robertnant1264 7 หลายเดือนก่อน

    So Dijkstra is basically doing level order traversal. But this time the level is represented by the distance to start node? Hence the use of a priority queue?

  • @rishabhgupta9846
    @rishabhgupta9846 2 ปีที่แล้ว

    understood,great explanation

  • @hrushi_borhade
    @hrushi_borhade ปีที่แล้ว

    understood striver!!!

  • @afridihaque5700
    @afridihaque5700 2 ปีที่แล้ว

    Striver bhaiya OP

  • @user-zn3be9ik1x
    @user-zn3be9ik1x 2 ปีที่แล้ว +1

    I am so so happy finally i understood this algorithm thankyou ☺

  • @maniknr2293
    @maniknr2293 2 ปีที่แล้ว

    Loved it❤

  • @KUMARSAURABH-s5i
    @KUMARSAURABH-s5i 8 หลายเดือนก่อน

    amazing🤩🤩

  • @yashshukla1637
    @yashshukla1637 หลายเดือนก่อน

    Thank you so much!!

  • @sallaklamhayyen9876
    @sallaklamhayyen9876 8 หลายเดือนก่อน

    thank you so much 🥰🥰🥰

  • @PratibhaSharma-h7b
    @PratibhaSharma-h7b หลายเดือนก่อน

    Thankyou very much .

  • @ujjwalrawat2361
    @ujjwalrawat2361 2 ปีที่แล้ว +1

    I have seen some people are also using a processed array to track which nodes are processed why you are not doing so...?

    • @takeUforward
      @takeUforward  2 ปีที่แล้ว

      the logic still is the same, let me know if you find some better complexity, thanks.

  • @rookiedrummer6838
    @rookiedrummer6838 4 หลายเดือนก่อน

    Thanks the tutorial is awesome.
    Line number 18 should be pq.push({s,0}) ??

  • @sanyam9712
    @sanyam9712 2 ปีที่แล้ว +1

    understood. Please make playlist on bit masking and bit manipulation

  • @KunalRajput-r2q5m
    @KunalRajput-r2q5m 4 หลายเดือนก่อน

    Why we are using PriorityQueue of , if we can find shortest path using PriorityQueue of only ??

    • @joshua_dlima
      @joshua_dlima 4 หลายเดือนก่อน

      distance is what helps us pick the next optimal node to be explored

  • @sharusharath1058
    @sharusharath1058 7 หลายเดือนก่อน

    nice explaination

  • @kushagramishra3026
    @kushagramishra3026 2 ปีที่แล้ว

    "Understood'👍

  • @DevashishJose
    @DevashishJose 11 หลายเดือนก่อน

    understood, thank you so much.

  • @Shivanai_h
    @Shivanai_h 2 ปีที่แล้ว

    Understood 👌👌

  • @The_Shubham_Soni
    @The_Shubham_Soni ปีที่แล้ว

    UNDERSTOOD.

  • @suryakiran2970
    @suryakiran2970 ปีที่แล้ว

    Understood❤

  • @mrsohelcse
    @mrsohelcse ปีที่แล้ว

    Can't thank you enough.

  • @Nikhil-Tomar
    @Nikhil-Tomar 5 หลายเดือนก่อน

    I think some explanations should be required in this video, First is in normal algorithm we had to keep marked nodes,

  • @ananttyagi7372
    @ananttyagi7372 2 ปีที่แล้ว

    understood very well

  • @medhanshmathur8108
    @medhanshmathur8108 9 หลายเดือนก่อน

    what is the need of taking heap ,cant we just go to neighbour node everytime using adjancency list and check for the distance condition whether it is greater or lower it would then automatically cover all the nodes?

  • @princenagar1686
    @princenagar1686 6 หลายเดือนก่อน

    For those who don't understand that why he take 1e9 instead of INT_MAX is because when you add something in INT_MAX then it become negative. So in line 29 of this c++ code , this will give you incorrect results.

  • @eshaanpandey7353
    @eshaanpandey7353 2 ปีที่แล้ว

    Understood 👍

  • @only_for_fun1234r
    @only_for_fun1234r ปีที่แล้ว

    In vid 28 you solved using bfs using queue is it related to dijkstra algo.???

  • @flip4661
    @flip4661 2 ปีที่แล้ว

    Amazing 👏

  • @priyanshvatsal9791
    @priyanshvatsal9791 ปีที่แล้ว

    Understood 😊😇

  • @aryashjain7893
    @aryashjain7893 2 ปีที่แล้ว +2

    if i store the pq as ({node , wieght}) would there be any issue , it works fine on gfg , rest understood

    • @takeUforward
      @takeUforward  2 ปีที่แล้ว +4

      watch the third video of dijksta, you will know why it worked

    • @aryashjain7893
      @aryashjain7893 2 ปีที่แล้ว

      @@takeUforward han bhaiya dekhaa 😂 🤣 u r a truee mentor... 36th se jo questions hai usme aur clear ho gaya

  • @karthik-varma-1579
    @karthik-varma-1579 2 หลายเดือนก่อน

    done and dusted striver
    telugu people attendance (from vizag)