algorithm
  • মডিউল ১ঃ গ্রাফের বেসিক ধারণা
    • মডিউল ১_০ঃ অ্যালগরিদম
    • মডিউল ১_১ঃ গ্রাফের বেসিক
    • মডিউল ১_২ঃ অ্যাডজাসেন্সি ম্যাট্রিক্স
    • মডিউল ১_৩ঃ অ্যাডজাসেন্সি ম্যাট্রিক্স ইমপ্লিমেন্টশন
    • মডিউল ১_৪ঃ অ্যাডজাসেন্সি লিস্ট
    • মডিউল ১_৫ঃ অ্যাডজাসেন্সি লিস্ট ইমপ্লিমেন্টশন
    • মডিউল ১_৬ঃ STL pair
    • মডিউল ১_৭ঃ Edge লিস্ট
  • মডিউল ২ঃ ব্রেডথ ফার্স্ট সার্চ
    • মডিউল ২_০ঃ ব্রেডথ ফার্স্ট সার্চ কি?
    • মডিউল ২_১ঃ বিএফএস এলগোরিদম
    • মডিউল ২_২ঃ বিএফএস কোড ইমপ্লিমেন্টেশন
    • মডিউল ২_৩ঃ বিএফএস লেভেল ট্র্যাকিং
    • মডিউল ২_৪ঃ কমপ্লেক্সিটি অ্যানালাইসিস
    • মডিউল ২_৫ঃ পাথ প্রিন্টিং
    • মডিউল ২_৬ঃ পাথ প্রিন্টিং ইমপ্লিমেন্টেশন
  • মডিউল ৩ঃ DFS এবং 2D গ্রীড
    • মডিউল ৩_০ঃ ইনট্রোডাকশন
    • মডিউল ৩_১ঃ DFS
    • মডিউল ৩_২ঃ DFS ইমপ্লিমেন্টশন
    • মডিউল ৩_৩ঃ 2D গ্রীড
    • মডিউল ৩_৪ঃ 2D গ্রীডে DFS ইমপ্লিমেন্টশন
    • মডিউল ৩_৫ঃ 2D গ্রীডে BFS ইমপ্লিমেন্টশন
  • মডিউল ৫ঃ Cycle Detection
    • মডিউল ৫_০ঃ ইনট্রোডাকশন
    • মডিউল ৫_১ঃ Cycle Detection Undirected গ্রাফে
    • মডিউল ৫_২ঃ Cycle Detection Undirected গ্রাফ BFS ইমপ্লিমেন্টশন
    • মডিউল ৫_৩ঃ Cycle Detection Undirected গ্রাফ DFS ইমপ্লিমেন্টশন
    • মডিউল ৫_৪ঃ Cycle Detection Directed গ্রাফে
    • মডিউল ৫_৫ঃ Cycle Detection Directed গ্রাফ DFS ইমপ্লিমেন্টশন
  • মডিউল ৬ঃ Dijkstra এলগরিদম
    • মডিউল ৬_০ঃ ইনট্রডাকশন
    • মডিউল ৬_১ঃ কেন Dijkstra এলগরিদম আমাদের প্রয়োজন?
    • মডিউল ৬_২ঃ পাথ রিলেক্সেশন
    • মডিউল ৬_৩ঃ Dijkstra Naive Approach
    • মডিউল ৬_৪ঃ Dijkstra Naive Approach Code
    • মডিউল ৬_৫ঃ Dijkstra Optimize Approach
    • মডিউল ৬_৭ঃ Dijkstra Optimize Code
  • মডিউল ৭ঃ Bellmanford এবং Floyd Warshall এলগোরিদম
    • মডিউল ৭_১ঃ কেন দরকার Bellmanford?
    • মডিউল ৭_২ঃ Bellmanford Algorithm
    • মডিউল ৭_৪ঃ Bellmanford Algorithm Code
    • মডিউল ৭_৫ঃ ডিটেক্ট নেগেটিভ সাইকেল
    • মডিউল ৭_৬ঃ কেন Floyd Warshall এলগোরিদম প্রয়োজন?
    • মডিউল ৭_৭ঃ Floyd Warshall Algorithm
    • মডিউল ৭_৮ঃ Floyd Warshall Algoritm Code
  • মডিউল ৯ঃ BFS , DFS দিয়ে Problem Solving
    • মডিউল ৯_০ঃ ইনট্রোডাকশন
    • মডিউল ৯_১ঃ Island Perimeter [Leetcode]
    • মডিউল ৯_২ঃ Find if Path Exists in Graph [Leetcode]
    • মডিউল ৯_৩ঃ Max Area of Island [Leetcode]
    • মডিউল ৯_৪ঃ Number of Islands [Leetcode]
    • মডিউল ৯_৫ঃ Count Sub Islands [Leetcode]
    • মডিউল ৯_৬ঃ Number of Closed Islands [Leetcode]
  • মডিউল ১০ঃ Disjoint Set Union
    • মডিউল ১০_০ঃ ইনট্রডাকশন
    • মডিউল ১০_১ঃ DSU কি?
    • মডিউল ১০_২ঃ Union Find কিভাবে কাজ করে?
    • মডিউল ১০_৩ঃ Find অপারেশন ইমপ্লিমেন্টেশন
    • মডিউল ১০_৫ঃ Union and Union by Size
    • মডিউল ১০_৭ঃ Union by rank
  • মডিউল ১১ঃ DSU Cycle Detection এবং MST
    • মডিউল ১১_০ঃ ইনট্রডাকশন
    • মডিউল ১১_১ঃ DSU দিয়ে Cycle Detection Undirected গ্রাফে
    • মডিউল ১১_২ঃ DSU দিয়ে Cycle Detection Undirected গ্রাফে ইমপ্লিমেন্টেশন
    • মডিউল ১১_৩ঃ Minimum Spanning Tree কি ?
    • মডিউল ১১_৪ঃ MST এর জন্য Kruskals Algorithm
    • মডিউল ১১_৫ঃ MST এর জন্য Kruskals Algorithm ইমপ্লিমেন্টেশন
  • মডিউল ১৩ঃ বেসিক গ্রাফ রিক্যাপ
    • মডিউল ১৩_০ঃ ইনট্রডাকশন
    • মডিউল ১৩_১ঃ এডজেসেন্সি ম্যাট্রিক্স
    • মডিউল ১৩_২ঃ এডজেসেন্সি লিস্ট ও এজ লিস্ট
    • মডিউল ১৩_৩ঃ এডজেসেন্সি লিস্ট টু এডজেসেন্সি ম্যাট্রিক্স পার্ট-১
    • মডিউল ১৩_৪ঃ এডজেসেন্সি লিস্ট টু এডজেসেন্সি ম্যাট্রিক্স পার্ট-২
    • মডিউল ১৩_৫ঃ এজ লিস্ট টু ম্যাট্রিক্স
    • মডিউল ১৩_৬ঃ এডজেসেন্সি ম্যাট্রিক্স টু এডজেসেন্সি লিস্ট
    • মডিউল ১৩_৭ঃ এজ লিস্ট টু এডজেসেন্সি লিস্ট
    • মডিউল ১৩_৮ঃ এডজেসেন্সি ম্যাট্রিক্স টু এজ লিস্ট
    • মডিউল ১৩_৯ঃ এডজেসেন্সি লিস্ট টু এজ লিস্ট
  • মডিউল ১৪ঃ প্রব্লেম সল্ভিং গ্রাফ অ্যালগরিদম দিয়ে
    • মডিউল ১৪_০ঃ ইনট্রডাকশন
    • মডিউল ১৪_১ঃ Romeo and Juliet
    • মডিউল ১৪_২ঃ Romeo and Juliet ইমপ্লিমেন্টেশন
    • মডিউল ১৪_৩ঃ Minimum Cost for Business
    • মডিউল ১৪_৪ঃ Dijkstra Path Printing
    • মডিউল ১৪_৫ঃ Building Roads
    • মডিউল ১৪_৬ঃ Building Roads ইমপ্লিমেন্টেশন
    • মডিউল ১৪_৭ঃ Message Routes
  • মডিউল ১৫ঃ প্রব্লেম সল্ভিং ২ গ্রাফ অ্যালগরিদম দিয়ে
    • মডিউল ১৫_০ঃ ইনট্রডাকশন
    • মডিউল ১৫_১ঃ Sundorban ইমপ্লিমেন্টেশন সহ
    • মডিউল ১৫_২ঃ Guilty Prince ইমপ্লিমেন্টেশন সহ
    • মডিউল ১৫_৩ঃ Commandos
    • মডিউল ১৫_৪ঃ Commandos ইমপ্লিমেন্টেশন
    • মডিউল ১৫_৫ঃ D. Roads not only in Berland
    • মডিউল ১৫_৬ঃ D. Roads not only in Berland ইমপ্লিমেন্টেশন
  • মডিউল ১৭ঃ বেসিক ডাইনামিক প্রোগামিং
    • মডিউল ১৭_০ঃ ইনট্রডাকশন
    • মডিউল ১৭_১ঃ ডাইনামিক প্রোগ্রামিং কি?
    • মডিউল ১৭_২ঃ ফ্যাক্টোরিয়াল নাম্বার
    • মডিউল ১৭_৩ঃ Fibonacci Series
    • মডিউল ১৭_৪ঃ Fibonacci Subproblem
    • মডিউল ১৭_৬ঃ Fibonacci Memoization
    • মডিউল ১৭_৭ঃ Bottom up approach in Fibonacci series
  • মডিউল ১৮ঃ Knapsack
    • মডিউল ১৮_০ঃ ইনট্রডাকশন
    • মডিউল ১৮_১ঃ Knapsack
    • মডিউল ১৮_২ঃ Knapsack Recursive Approach
    • মডিউল ১৮_৪ঃ Knapsack Top Down Approach ইমপ্লিমেন্টেশনসহ
    • মডিউল ১৮_৫ঃ Knapsack Bottom Up Approach
    • মডিউল ১৮_৬ঃ Knapsack Bottom Up ইমপ্লিমেন্টেশন
  • মডিউল ১৯ঃ 0-1 Knapsack Variation
    • মডিউল ১৯_০ঃ ইনট্রডাকশন
    • মডিউল ১৯_১ঃ সাবসেট সাম টপ ডাউন
    • মডিউল ১৯_২ঃ সাবসেট সাম Bottom up
    • মডিউল ১৯_৩ঃ Count of Subset Sum
    • মডিউল ১৯_৪ঃ Count no of Zeroes in Subset
    • মডিউল ১৯_৫ঃ Equal Sum Partition
    • মডিউল ১৯_৬ঃ Minimum Subset Sum
    • মডিউল ১৯_৭ঃ Count Subset Sum with given difference
    • মডিউল ১৯_৮ঃ Target Sum
  • বোনাস মডিউল ২১ঃ Unbounded Knapsack
    • মডিউল ২১_১ঃ Unbounded Knapsack Approach
    • মডিউল ২১_২ঃ Unbounded Knapsack ইমপ্লিমেন্টেশন
    • মডিউল ২১_৩ঃ Rod Cutting Problem
    • মডিউল ২১_৪ঃ Coin Change 1
    • মডিউল ২১_৫ঃ Coin Change 2
  • বোনাস মডিউল ২২ঃ Longest Common Subsequence
    • মডিউল ২২_১ঃ Substring vs Subsequence
    • মডিউল ২২_২ঃ Longest Common Subsequence Approach
    • মডিউল ২২_৩ঃ LCS Top Down Implementation
    • মডিউল ২২_৪ঃ LCS Bottom Up Implementation
    • মডিউল ২২_৫ঃ LCS Table Fill Up
    • মডিউল ২২_৬ঃ Printing LCS Approach
    • মডিউল ২২_৭ঃ Printing LCS Implementation
    • মডিউল ২২_৮ঃ Longest Common Substring Bottom Up and Printing
  • বোনাস মডিউল ২৩ঃ Merge Sort
    • মডিউল ২৩_০ঃ ইনট্রডাকশন
    • মডিউল ২৩_১ঃ Merge Two Sorted Arrays
    • মডিউল ২৩_২ঃ Merge two sorted array implementation
    • মডিউল ২৩_৩ঃ How Divide Works in Merge Sort
    • মডিউল ২৩_৪ঃ Merge Sort
  • মডিউল ২ঃ ব্রেডথ ফার্স্ট সার্চ
    • Untitled
    • Page 2
Powered by GitBook
On this page
  1. মডিউল ৬ঃ Dijkstra এলগরিদম

মডিউল ৬_৪ঃ Dijkstra Naive Approach Code

এখানে আমরা Dijkstra এর Naive ভারশন এর কোডটা দেখবোঃ

// Some code
```cpp
    int n, e;
    cin >> n >> e;
    while (e--)
    {
        int a, b, c;
        cin >> a >> b >> c;
        v[a].push_back({b, c});
        v[b].push_back({a, c});
    }
```

এখানে গ্রাফটি বিল্ড করলাম।

// Some code
```cpp
    for (int i = 0; i < n; i++)
    {
        dis[i] = INT_MAX;
    }
```

ডিস্টেন্স এ্যারেকে ইনিশিয়ালি INT_MAX সেট করে রাখলাম যা infinity কে নির্দেশ করে।

// Some code
```cpp
void dijkstra(int src)
{
    queue<pair<int, int>> q;
    q.push({src, 0});
    dis[src] = 0;
    while (!q.empty())
    {
        pair<int, int> parent = q.front();
        q.pop();
        int node = parent.first;
        int cost = parent.second;
        for (pair<int, int> child : v[node])
        {
            int childNode = child.first;
            int childCost = child.second;
            if (cost + childCost < dis[childNode])
            {
                // path relax
                dis[childNode] = cost + childCost;
                q.push({childNode, dis[childNode]});
            }
        }
    }
}
```

এবার হলো মেইন কাজ। এখানে Dijkstra ফাংশন্টা বিল্ড করলাম।

// Some code
            if (cost + childCost < dis[childNode])
            {
                // path relax
                dis[childNode] = cost + childCost;
                q.push({childNode, dis[childNode]});
            }

এখানে এজ রিল্যাক্স এর কন্ডিশন সত্যি হলে নতুন ডিস্টেন্স সেট করে সেটাকে কিউতে পুশ করে দিচ্ছি।

সম্পূর্ণ কোডঃ

// Some code
```cpp
#include <bits/stdc++.h>
using namespace std;
const int N = 100;
vector<pair<int, int>> v[N];
int dis[N];
void dijkstra(int src)
{
    queue<pair<int, int>> q;
    q.push({src, 0});
    dis[src] = 0;
    while (!q.empty())
    {
        pair<int, int> parent = q.front();
        q.pop();
        int node = parent.first;
        int cost = parent.second;
        for (pair<int, int> child : v[node])
        {
            int childNode = child.first;
            int childCost = child.second;
            if (cost + childCost < dis[childNode])
            {
                // path relax
                dis[childNode] = cost + childCost;
                q.push({childNode, dis[childNode]});
            }
        }
    }
}
int main()
{
    int n, e;
    cin >> n >> e;
    while (e--)
    {
        int a, b, c;
        cin >> a >> b >> c;
        v[a].push_back({b, c});
        v[b].push_back({a, c});
    }
    for (int i = 0; i < n; i++)
    {
        dis[i] = INT_MAX;
    }
    dijkstra(0);
    for (int i = 0; i < n; i++)
    {
        cout << i << "-> " << dis[i] << endl;
    }
    return 0;
}
```
Previousমডিউল ৬_৩ঃ Dijkstra Naive ApproachNextমডিউল ৬_৫ঃ Dijkstra Optimize Approach

Last updated 1 year ago