O‘zbekiston respublikasi axborot texnologiyalari vа kommunikatsiyalarini rivojlantirish vazirligi




Download 0.68 Mb.
bet3/3
Sana21.02.2023
Hajmi0.68 Mb.
#43065
1   2   3
Bog'liq
AL Mustaqil ish Botir Tulyaganov 44-20

using namespace std;
int p[100000];
int rk[100000];

void init_dsu() {
for (int i = 0; i < 100000; i++) {
p[i] = i;
rk[i] = 1;
}
}

int get_root(int v) {
if (p[v] == v) {
return v;
} else {
return p[v] = get_root(p[v]);
}
}
bool merge(int a, int b) {
int ra = get_root(a), rb = get_root(b);

if (ra == rb) {
return false;
} else {
if (rk[ra] < rk[rb]) {
p[ra] = rb;
} else if (rk[rb] < rk[ra]) {
p[rb] = ra;
} else {
p[ra] = rb;
rk[rb]++;
}

return true;
}
}

struct edge {
int a, b, len;

bool operator<(const edge& other) {
return len < other.len;
}
};

int main() {
vector<edge> edges;

sort(edges.begin(), edges.end());



int mst_weight = 0;

init_dsu();



for (edge e: edges) {
if (merge(e.a, e.b)) {
mst_weight += e.len;
}
}

cout << "Minimum spanning tree weight: " << mst_weight << endl;


}



  1. Ish tezligidagi farqlar

Ikkala algoritm ham quyidagilar uchun ishlaydi O(M log N), ularning ishlash tezligida doimiy farqlar mavjud. Kruskal algoritmi siyrak grafikalarda (qirralarning soni taxminan tepaliklar soniga teng) tezroq ishlaydi va to'yingan grafikalarda (qirralarning soni tepaliklar sonining kvadratiga teng) - Prim algoritmi (qo'shni matritsadan foydalanganda).
Amalda Kruskal algoritmi ko'proq qo'llaniladi.
Download 0.68 Mb.
1   2   3




Download 0.68 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



O‘zbekiston respublikasi axborot texnologiyalari vа kommunikatsiyalarini rivojlantirish vazirligi

Download 0.68 Mb.