public static void main(String[] args) {
try {
FriendshipGraph graph = new FriendshipGraph();
Person rachel = new Person("Rachel");
Person ross = new Person("Ross");
Person ben = new Person("Ben");
Person kramer = new Person("Kramer");
graph.addVertex(rachel);
graph.addVertex(ross);
graph.addVertex(ben);
graph.addVertex(kramer);
graph.addEdge(rachel, ross);
graph.addEdge(ross, rachel);
graph.addEdge(ross, ben);
graph.addEdge(ben, ross);
System.out.println(graph.getDistance(rachel, ross));
// should print 1
System.out.println(graph.getDistance(rachel, ben));
// should print 2
System.out.println(graph.getDistance(rachel, rachel));
// should print 0
System.out.println(graph.getDistance(rachel, kramer));
// should print -1
} catch (SameNameException e) {
System.out.println("Each Person Must Have Unique Name.");
}
}
private Integer bfs(int s, int t) {
Queue<Integer> queue = new LinkedList<Integer>();
queue.offer(s);
int[] array = new int[n];
for (int i = 0; i < n; i++)
array[i] = -1;
array[s] = 0;
while (!queue.isEmpty()) {
int now = queue.poll();
if (now == t)
return array[t];
if (array[now] == -1)
return -1;
for (Edge p = g.get(now); p != null; p = p.next) {
if (array[p.vertex] == -1) {
array[p.vertex] = array[now] + 1;
queue.offer(p.vertex);
}
}
}
return -1;
}
在这个实验中,我遇到了许多的bug,首先就是面对先写test我不知道应该写什么,事实上,我的test在全部完成后还是存在很多的bug,直到我的程序完成才进行了进一步的修改。然后,在P1中,在完成了边的方面的程序之后,我觉得点的程序应该和边的程序差不多,但是他们还是有一定的区别,因为思路不够清晰,所以走了一些弯路。然后在L中,改成不是固定的类型的时候,出现了很多的错误,由于String和L之间存在着一定的差异,所以在同学的帮助下改正了这些bug。P2相对P1比较简单了,就是在P1的基础上进行修改。