মডিউল ১৩_৯ঃ এডজেসেন্সি লিস্ট টু এজ লিস্ট
আমরা এখন দেখবো কিভাবে এডজেসেন্সি লিস্ট থেকে এজ লিস্ট এ কনভার্ট করতে হয়।

এই গ্রাফ এর এডজেসেন্সি লিস্ট হবেঃ
০->১
১->২
২->৩
৩->১
তাহলে আমরা আবার একটা এজ রাখার জন্য ভেক্টর নেব। আমরা চাইলে pair এর ভেক্টর ও নিতে পারি আবার চাইলে এজ রাখার জন্য একটা অব্জেক্ট ক্লাস বানিয়ে রাখতে পারি যেখানে দুই নোড ও তাদের কস্টকে রাখা যেতে পারে।
// Some code
class Edge
{
public:
int u, v, w;
Edge(int u, int v, int w)
{
this->u = u;
this->v = v;
this->w = w;
}
};
এবার আমরা প্রত্যেক নোড এর লিস্ট এ যাবো ও সেই নোড এর লিস্ট এর প্রতি ভ্যালু ও তাদের কস্টকে বের করে এনে এজ ক্লাস এর একটি অব্জেক্ট বানিয়ে এজ ভেক্টরে পুশ করে দিব। তাহলেই হয়ে যাবে আমাদের এজ লিস্ট রেডি।
// Some code
vector<Edge> edgeList;
for (int i = 0; i < n; i++)
{
for (pair<int, int> child : v[i])
{
int childNode = child.first;
int cost = child.second;
edgeList.push_back(Edge(i, childNode, cost));
}
}
সম্পূর্ণ কোডঃ
// Some code
#include <bits/stdc++.h>
using namespace std;
class Edge
{
public:
int u, v, w;
Edge(int u, int v, int w)
{
this->u = u;
this->v = v;
this->w = w;
}
};
int main()
{
int n, e;
cin >> n >> e;
vector<pair<int, int>> v[n];
while (e--)
{
int a, b, c;
cin >> a >> b >> c;
v[a].push_back({b, c});
}
vector<Edge> edgeList;
for (int i = 0; i < n; i++)
{
for (pair<int, int> child : v[i])
{
int childNode = child.first;
int cost = child.second;
edgeList.push_back(Edge(i, childNode, cost));
}
}
for (Edge edge : edgeList)
{
cout << edge.u << " " << edge.v << " " << edge.w << endl;
}
return 0;
}
Previousমডিউল ১৩_৮ঃ এডজেসেন্সি ম্যাট্রিক্স টু এজ লিস্টNextমডিউল ১৪ঃ প্রব্লেম সল্ভিং গ্রাফ অ্যালগরিদম দিয়ে
Last updated