具有不相交算法的Kruskal

时间:2018-12-05 21:59:07

标签: kruskals-algorithm

我正在尝试使用不相交的函数(findset,makeset,union)来实现kruskal算法,并且这些函数可以工作,但是我似乎无法理解Kruskal函数的问题所在。

 void kruskal(Graf *G, int n,Edge *E[], const int nrEdges) {
    struct Edge*A[5000];
    insertionSort(E, nrEdges);
        for (int i = 0; i < n; i++) {
            G->V[i]=make_set(i);
        }
        for (int j = 0; j < n; j++) {
            //printf("%d\n", j);
            if (find_set(G->E[j]->src) != find_set(G->E[j]->dest)) {
                A[cnt++] = G->E[j];
                set_unions(G->E[j]->src, G->E[j]->dest);
            }
        }
        cnt = 0;
    }

这是我尝试打印结果的位置: ...

printf("\n Kruskal's alg:\n ");

  Edge **ed;
  kruskal(G, 9, G->E, 14); //DE CE CRAPIII 
  for (int i = 0; i < 14; i++) {
        printf("%c -> %c with a cost of %d\n", 'a' + G->E[i]->src->info, 'a' + G->E[i]->dest->info, G->E[i]->weigth);

0 个答案:

没有答案