耗时两天,终于把怎样求无向图的连通分量看懂了。算法是以前老师告诉我的吧,现在忘了,所以才看明白
一个无向图放在一个矩阵里面,比如一个3*3的
list [0]
list [1]
list [2]
循环遍历,如果两两组合,找出最小值与平均值比较,把一个列表与前一个列表合并,然后删掉这个列表。说不清楚了,写的时候还是有很多细节的地方要注意的啊
不说了,上代码
//本程序实现的是求一个无向图的连通分量
class triplet
{
public int x;
public int y;
public double dist;
public triplet(int x_v, int y_v, double dist_v)
{
x = x_v;
y = y_v;
dist = dist_v;
}
}
//建立一个类,使用里面的变量。使用它要实例化
public class ConnComp {
public static double[][] matrix={
{ 0, 0.2, 0, 0},
{ 0.2, 0, 0, 0 },
{0, 0, 0, 0.4 },
{0, 0, 0.4, 0}
};
public static int NODE=4;
public static int[][] list=new int[NODE][NODE];
public static int DELETED=0;
pub