部落格說明
介紹最小生成樹
修路問題
思路問題一
排序問題二
判斷迴路
**實現
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時,全部輸入結束,相應的結果不要輸出。對每個測試用例,在...