Sto provando a scrivere un programma che trovi l'albero di spanning minimo. Ma un problema che sto riscontrando con questo algoritmo è la verifica di un circuito. Quale sarebbe il modo migliore per farlo in java.Test per un circuito durante l'implementazione dell'algoritmo di Kruskalls
Ok Ecco il mio codice
import java.io.*;
import java.util.*;
public class JungleRoads
{
public static int FindMinimumCost(ArrayList graph,int size)
{
int total = 0;
int [] marked = new int[size]; //keeps track over integer in the mst
//convert an arraylist to an array
List<String> wrapper = graph;
String[] arrayGraph = wrapper.toArray(new String[wrapper.size()]);
String[] temp = new String[size];
HashMap visited = new HashMap();
for(int i = 0; i < size; i++)
{
// System.out.println(arrayGraph[i]);
temp = arrayGraph[i].split(" ");
//loop over connections of a current node
for(int j = 2; j < Integer.parseInt(temp[1])*2+2; j++)
{
if(temp[j].matches("[0-9]+"))
{
System.out.println(temp[j]);
}
}
}
graph.clear();
return total;
}
public static void main(String[] args) throws IOException
{
FileReader fin = new FileReader("jungle.in");
BufferedReader infile = new BufferedReader(fin);
FileWriter fout = new FileWriter("jungle.out");
BufferedWriter outfile = new BufferedWriter(fout);
String line;
line = infile.readLine();
ArrayList graph = new ArrayList();
do
{
int num = Integer.parseInt(line);
if(num!= 0)
{
int size = Integer.parseInt(line)-1;
for(int i=0; i < size; i++)
{
line = infile.readLine();
graph.add(line);
}
outfile.write(FindMinimumCost(graph, size));
}
line = infile.readLine();
}while(!line.equals("0"));
}
}
mi corregga se sbaglio, ma questo è un albero, così ogni nodo, tranne il primo nodo avrebbe un nodo padre. Hai preso in considerazione questa implementazione. –
@Legend, nell'algoritmo di kruskall, durante il runtime dell'algoritmo non abbiamo una struttura ad albero, quindi la tua ipotesi è sbagliata. –