Program: 51044
Project: 51044
Buggy source:
private static void read(Graph<Vertex<Integer>,Edge<Integer>> graph,File file) throws IOException {
  BufferedReader reader=new BufferedReader(new FileReader(file));
  String line;
  int i=0;
  int edges=0;
  HashSet<Integer> set=new HashSet<Integer>();
  do {
    line=reader.readLine();
    i++;
    if (line == null)     continue;
    if (line.trim().isEmpty())     continue;
    if (line.trim().startsWith("String_Node_Str"))     continue;
    String[] split=line.split("String_Node_Str");
    if (split.length < 2)     throw new IllegalArgumentException("String_Node_Str" + i + "String_Node_Str");
    Integer a, b, c=null;
    try {
      a=Integer.parseInt(split[0]);
    }
 catch (    NumberFormatException e) {
      throw new RuntimeException("String_Node_Str" + i + "String_Node_Str"+ split[0]+ "String_Node_Str",e);
    }
    try {
      b=Integer.parseInt(split[1]);
    }
 catch (    NumberFormatException e) {
      throw new RuntimeException("String_Node_Str" + i + "String_Node_Str"+ split[1]+ "String_Node_Str",e);
    }
    if (split.length > 2)     try {
      c=Integer.parseInt(split[2]);
    }
 catch (    NumberFormatException e) {
      throw new RuntimeException("String_Node_Str" + i + "String_Node_Str"+ split[1]+ "String_Node_Str",e);
    }
    edges++;
    Vertex<Integer> av=new Vertex<Integer>(a), bv=new Vertex<Integer>(b);
    Edge<Integer> edge=new Edge<Integer>(c == null ? edges : c);
    if (((long)edges) > Integer.MAX_VALUE)     throw new IllegalStateException("String_Node_Str" + edges + "String_Node_Str"+ i+ "String_Node_Str"+ Integer.MAX_VALUE+ "String_Node_Str");
    set.add(a);
    set.add(b);
    graph.addEdge(new Edge<Integer>(edges),av,bv);
    if (edges % 100000 == 0)     System.out.print("String_Node_Str" + edges + "String_Node_Str");
  }
 while (line != null);
  System.out.println("String_Node_Str" + edges + "String_Node_Str");
  System.out.println("String_Node_Str" + set.size() + "String_Node_Str");
  HashSet<Integer> all=new HashSet<Integer>();
  for (int j=1; j < 307; j++)   all.add(j);
  System.out.println(all.removeAll(set));
  System.out.println(all);
}

Fixed version (ground truth):
private static void read(Graph<Vertex<Integer>,Edge<Integer>> graph,File file) throws IOException {
  Map<Integer,Vertex<Integer>> map=new HashMap<Integer,Vertex<Integer>>();
  BufferedReader reader=new BufferedReader(new FileReader(file));
  String line;
  int i=0;
  int edges=0;
  HashSet<Integer> set=new HashSet<Integer>();
  do {
    line=reader.readLine();
    i++;
    if (line == null)     continue;
    if (line.trim().isEmpty())     continue;
    if (line.trim().startsWith("String_Node_Str"))     continue;
    String[] split=line.split("String_Node_Str");
    if (split.length < 2)     throw new IllegalArgumentException("String_Node_Str" + i + "String_Node_Str");
    Integer a, b, c=null;
    try {
      a=Integer.parseInt(split[0]);
    }
 catch (    NumberFormatException e) {
      throw new RuntimeException("String_Node_Str" + i + "String_Node_Str"+ split[0]+ "String_Node_Str",e);
    }
    try {
      b=Integer.parseInt(split[1]);
    }
 catch (    NumberFormatException e) {
      throw new RuntimeException("String_Node_Str" + i + "String_Node_Str"+ split[1]+ "String_Node_Str",e);
    }
    if (split.length > 2)     try {
      c=Integer.parseInt(split[2]);
    }
 catch (    NumberFormatException e) {
      throw new RuntimeException("String_Node_Str" + i + "String_Node_Str"+ split[1]+ "String_Node_Str",e);
    }
    edges++;
    Vertex<Integer> av=vertex(a,map), bv=vertex(b,map);
    Edge<Integer> edge=new Edge<Integer>(c == null ? edges : c);
    if (((long)edges) > Integer.MAX_VALUE)     throw new IllegalStateException("String_Node_Str" + edges + "String_Node_Str"+ i+ "String_Node_Str"+ Integer.MAX_VALUE+ "String_Node_Str");
    set.add(a);
    set.add(b);
    graph.addEdge(new Edge<Integer>(edges),av,bv);
    if (edges % 100000 == 0)     System.out.print("String_Node_Str" + edges + "String_Node_Str");
  }
 while (line != null);
  System.out.println("String_Node_Str" + edges + "String_Node_Str");
  System.out.println("String_Node_Str" + set.size() + "String_Node_Str");
  HashSet<Integer> all=new HashSet<Integer>();
  for (int j=1; j < 307; j++)   all.add(j);
  System.out.println(all.removeAll(set));
  System.out.println(all);
}