package ch.akuhn.graph2;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Scanner;
import org.junit.Test;
public class Graph {
public static final int NIL = Integer.MAX_VALUE;
public static Graph parse(String s) {
Scanner in = new Scanner(s);
int N = in.nextInt();
int M = in.nextInt();
Graph g = new Graph(N);
for (int m = 0; m < M; m++) {
int a = in.nextInt() - 1;
int b = in.nextInt() - 1;
int c = in.nextInt();
g.cost[a][b] = c;
g.cost[b][a] = c;
}
return g;
}
final int[][] cost;
public Graph(int size) {
cost = new int[size][size];
for (int[] each: cost) {
Arrays.fill(each, NIL);
}
}
public Graph clone() {
Graph g = new Graph(this.size());
for (int n = 0; n < cost.length; n++) {
g.cost[n] = Arrays.copyOf(cost[n], cost[n].length);
}
return g;
}
public int size() {
return cost.length;
}
public static class Examples {
@Test
public void shouldParseString() {
String s = "6 7\n1 2 20\n1 3 5\n1 4 10\n2 3 8\n2 4 15\n3 4 2\n5 6 9";
Graph g = Graph.parse(s);
assertEquals(6, g.size());
}
}
}