public List<String> spenntreKruskal()
{
record NyKant(String fra, String til, int vekt)
{
public String toString() { return "(" + fra + "," + til + "," + vekt + ")"; }
}
PriorityQueue<NyKant> kø = new PriorityQueue<>((a,b) -> a.vekt - b.vekt);
for (Node p : noder.values())
{
for (Kant kant : p.kanter)
{
if (!kant.til.ferdig)
kø.offer(new NyKant(p.navn, kant.til.navn, kant.vekt));
}
p.ferdig = true;
}
nullstill(); /
List<String> liste = new ArrayList<>();
UnionFinn<String> mengder = new UnionFinn<>();
int vektsum = 0;
while (!kø.isEmpty())
{
NyKant kant = kø.poll();
int antall = mengder.union(kant.fra, kant.til);
if (antall > 0)
{
vektsum += kant.vekt;
liste.add(kant.toString());
}
if (antall == noder.size()) break;
}
liste.add("Vekt: " + vektsum);
return liste;
}