মডিউল ১৩_৮ঃ এডজেসেন্সি ম্যাট্রিক্স টু এজ লিস্ট

এখন আমরা দেখবো কিভাবে এডজেসেন্সি ম্যাট্রিক্স থেকে এজ লিস্ট এ কনভার্ট করা যায়।

এখন আমরা এজ গুলোকে রাখার জন্য একটা ভেক্টর অব পেয়ার নিব।

এখন ম্যাট্রিক্স এর প্রতি সেল এ যাবো এবং চেক করবো যে ওই সেল এর ভ্যালু ১ কিনা। যদি হয় সেই ক্ষেত্রে তাকে ভেক্টরে পুশ করে দিব। এই ক্ষেত্রে একটা কন্ডিশন ভুলে গেলে চলবে না। সেটি হচ্ছে যদি সারি ও কলাম নাম্বার সেইম হয় তাহলে সেটা সেলফ নোড বোঝায় সেটিকে পুশ করা যাবে না।

// Some code
    vector<pair<int, int>> edgeList;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (mat[i][j] == 1 && i != j)
            {
                edgeList.push_back({i, j});
            }
        }
    }

যদি weighted গ্রাফ থাকে সেই ক্ষেত্রে শুধু কন্ডিশনে একটু পরিবর্তন আসবে।

সেটি হচ্ছে সেই ক্ষেত্রে আমরা চেক করব ম্যাট্রিক্সের সেল এর ভ্যালু যদি ০ থেকে বড় হয় তাহলে পুশ করে দিব।

// Some code
    vector<Edge> edgeList;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (mat[i][j] > 0)
            {
                edgeList.push_back(Edge(i, j, mat[i][j]));
            }
        }
    }

Last updated