afterMap = new LinkedHashMap<Topic, Set<Topic>>();
Map<Integer, Student> studentMap = new HashMap<Integer, Student>();
int examSize = readHeaderWithNumber("Exams");
List<Topic> topicList = new ArrayList<Topic>(examSize);
for (int i = 0; i < examSize; i++) {
Topic topic = new Topic();
topic.setId((long) i);
String line = bufferedReader.readLine();
String[] lineTokens = line.split(SPLIT_REGEX);
topic.setDuration(Integer.parseInt(lineTokens[0]));
List<Student> topicStudentList = new ArrayList<Student>(lineTokens.length - 1);
for (int j = 1; j < lineTokens.length; j++) {
topicStudentList.add(findOrCreateStudent(studentMap, Integer.parseInt(lineTokens[j])));
}
topic.setStudentList(topicStudentList);
topic.setFrontLoadLarge(false);
topicList.add(topic);
coincidenceMap.put(topic, new HashSet<Topic>());
exclusionMap.put(topic, new HashSet<Topic>());
afterMap.put(topic, new HashSet<Topic>());
}