Files
School/Anul 1/Semestrul 2/Graph Algo/Labs/Lab 3/DirectedGraphJava/Main.java
T
2024-08-31 12:07:21 +03:00

69 lines
2.3 KiB
Java

package DirectedGraphJava;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
public class Main {
public static DirectedGraph read_from_file(String filename) throws FileNotFoundException {
DirectedGraph graph = new DirectedGraph();
File file = new File(filename);
Scanner scanner = new Scanner(file);
Integer num_vertices = scanner.nextInt();
for(Integer i = 0; i < num_vertices; i++)
graph.addVertex(i);
Integer num_edges = scanner.nextInt();
for(Integer i = 0; i < num_edges; i++){
Integer v1 = scanner.nextInt();
Integer v2 = scanner.nextInt();
Integer w = scanner.nextInt();
graph.addEdge(v1, v2, w);
}
scanner.close();
return graph;
}
public static void write_to_file(DirectedGraph graph, String filename) throws IOException {
DirectedGraph new_graph = graph.reindex();
File file = new File(filename);
file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write(new_graph.numVertices().toString() + " " + new_graph.numEdges().toString() + "\n");
for(Iterator<Pair<Pair<Integer, Integer>,Integer>> edge = new_graph.edges(); edge.hasNext();){
Pair<Pair<Integer, Integer>,Integer> e = edge.next();
writer.write(e.first.first.toString() + " " + e.first.second.toString() + " " + e.second.toString() + "\n");
}
writer.close();
}
public static DirectedGraph random_graph(Integer num_vertices, Integer num_edges) {
DirectedGraph graph = new DirectedGraph();
for(Integer i = 0; i < num_vertices; i++)
graph.addVertex(i);
for(Integer i = 0; i < num_edges; i++){
Integer v1 = (int)(Math.random() * num_vertices);
Integer v2 = (int)(Math.random() * num_vertices);
Integer w = (int)(Math.random() * 100);
if(graph.isEdge(v1, v2)){
i--;
continue;
}
graph.addEdge(v1, v2, w);
}
return graph;
}
public static void main(String[] args) {
ui UI = new ui();
UI.run();
}
}