常用十大演算法(七) 克魯斯卡爾演算法

2022-09-15 08:36:16 字數 1251 閱讀 4903

部落格說明

介紹最小生成樹

修路問題

思路問題一

排序問題二

判斷迴路

**實現

package com.atguigu.kruskal;

import j**a.util.arrays;

public class kruskalcase ;

int matrix = ,

/*b*/ ,

/*c*/ ,

/*d*/ ,

/*e*/ ,

/*f*/ ,

/*g*/

}; kruskalcase kruskalcase = new kruskalcase(vertexs, matrix);

kruskalcase.print();

kruskalcase.kruskal(); }

//構造器

public kruskalcase(char vertexs, int matrix)

//初始化表

this.matrix = new int[vlen][vlen];

for(int i = 0; i < vlen; i++)

} for(int i =0; i < vlen; i++)

}} }

//克魯斯卡爾演算法

public void kruskal()

} system.out.println("×îð¡éú³éê÷îª");

for(int i = 0; i < index; i++) }

public void print()

system.out.println();

} }//對邊排序

private void sortedges(edata edges)

}} }

//頂點的值

private int getposition(char ch)

} return -1;

} //獲取圖中的邊

private edata getedges()

}

感謝

尚矽谷

以及勤勞的自己,個人部落格,github

克魯斯卡爾(kruskal)演算法 十大演算法

克魯斯卡爾演算法是用來求加權連通圖的最小生成樹的演算法。按照權值從小到大的順序選擇n 1條邊,並保證這n 1條邊不構成迴路。首先構造乙個只含n個頂點的森林,然後依權值從小到大從連通網中選擇邊加入到森林中,並使森林中不產生迴路,直至森林變成一棵樹為止 1 某城市新增7個站點 a,b,c,d,e,f,g...

bzoj1821(克魯斯卡爾)

hzwer上的,知道是用克魯斯卡爾,但是思路還是自己猜出來的 思路 感覺就是猜出來的,因為所有的點集之間的距離是他們所含點對之間的最短距離,對於例題中的圖,想像一下,在這幾個點集之間相互連邊 就是連最短的邊,他們就會聯通,實際上本題就是,把所有的點按最小距離連起來,找到最大的k 1條邊,把他們刪掉 ...

克魯斯卡爾演算法

測試輸入包含若干測試用例。每個測試用例的第1行給出評估的道路條數 n 村莊數目m 100 隨後的 n 行對應村莊間道路的成本,每行給出一對正整數,分別是兩個村莊的編號,以及此兩村莊間道路的成本 也是正整數 為簡單起見,村莊從1到m編號。當n為0時,全部輸入結束,相應的結果不要輸出。對每個測試用例,在...