import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; import javax.swing.*; import java.awt.*; import java.lang.Math; import java.util.Random; import java.util.*; public class yeet extends JFrame { Scanner scan; int n, e; // n: Anzahl Punkte, e: Anzahl Wege String tmpStr1, filename; int[] xarr, yarr; int[][] earr; char tmpChar; int[] dist; // distanzen int[][] con; // connections public static void main(String[] args) { if (args.length == 0) { new yeet(); } else { for (int i = 0; i < args.length; i++) { new yeet(args[i]); } } } public yeet() { setSize(800, 800); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); setBackground(new Color(0, 0, 0)); filename = "input.txt"; steps(); } public yeet(String input) { setSize(800, 800); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); setBackground(new Color(0, 0, 0)); filename = input; steps(); } public void steps() { readFile(); // einlesen readNE(); // anzahl von n und e finden. Als int n und e gespeichert make(); // Arrays erstellen repaint(); } public void readFile() { try { scan = new Scanner(new File(filename)); } catch (FileNotFoundException e) { e.printStackTrace(); } } public void readNE() { n = 0; e = 0; while (scan.hasNext() == true) { tmpChar = scan.next().charAt(0); if (tmpChar == 'n') { n++; } if (tmpChar == 'e') { e++; } } readFile(); } public void make() { readFile(); xarr = new int[n]; // X Position yarr = new int[n]; // Y Position earr = new int[e][3]; // [x][y]; x:Wert, y:0=Start, 1=Ziel, 2=Abstand for (int i = 0; i < n; i++) { scan.next(); xarr[i] = scan.nextInt(); yarr[i] = scan.nextInt(); } for (int i = 0; i < e; i++) { scan.next(); earr[i][0] = scan.nextInt();// Start earr[i][1] = scan.nextInt();// Ziel earr[i][2] = scan.nextInt();// Entfernung } readFile(); } public int[] qwerty(int node) { dist = new int[n]; // kurzeste Distanz von 0 zu Punkt i int boi = 0; for (int r = 0; r < n; r++) { if (conn(node, r)) { boi++; } } int[] out; out = new int[boi]; int boii = 0; for (int r = 0; r < n; r++) { if (conn(node, r)) { out[boii] = r; } } return out; } public boolean conn(int input, int input2) { boolean fish = false; for (int i = 0; i < n; i++) { if (earr[i][0] == input && earr[i][1] == input2) { fish = true; } if (earr[i][0] == input2 && earr[i][1] == input) { fish = true; } } return fish; } public int distance(int input, int input2) { for (int i = 0; i < n; i++) { if (earr[i][0] == input && earr[i][1] == input2) { return earr[i][2]; } if (earr[i][0] == input2 && earr[i][1] == input) { return earr[i][2]; } } return 0; } public void paint(Graphics g) { labAnzeigen(g); } public void labAnzeigen(Graphics g) { g.clearRect(0, 0, 800, 800); // Feld clearen g.setColor(new Color(200, 10, 100)); // Farbe setzen for (int i = 0; i < n; i++) { g.fillOval(xarr[i], yarr[i], 36, 36); // Punkt fur Stadt erstellen g.setColor(new Color(0, 0, 0)); g.drawString(Integer.toString(i), xarr[i] + 14, yarr[i] + 22); // Stadt bezeichnen g.setColor(new Color(200, 10, 100)); } for (int i = 0; i < e; i++) { g.drawLine(xarr[earr[i][0]] + 16, yarr[earr[i][0]] + 16, xarr[earr[i][1]] + 16, yarr[earr[i][1]] + 16); // linie } for (int i = 0; i < e; i++) { g.setColor(new Color(100, 255, 100)); g.drawString(Integer.toString(earr[i][2]), (xarr[earr[i][0]] + xarr[earr[i][1]]) / 2 + 10, (yarr[earr[i][0]] + yarr[earr[i][1]]) / 2 + 20); // zeichnung der Linie g.setColor(new Color(200, 10, 100)); } } }