求助:一个拓扑排序的程序
输入一个有向图,存进G[][]里,然后来个拓扑排序,输出排序后的结果。
我输入
5
0
4 5 1 0
1 0
5 3 0
3 0
回车运行的结果是:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at Main.dfs(Main.java:12)
at Main.dfs(Main.java:9)
at Main.dfs(Main.java:9)
at Main.toposort(Main.java:18)
at Main.main(Main.java:34)
个人找了好些资料,却一点头绪也无,求助各位朋友了,谢谢!
代码如下:
public static boolean dfs(int u) {
c[u] = -1;
for (int v = 1; v <= N; v++)
if (G[u][v] == 1) {
if (c[v] < 0)
return false;
if (c[v] == 0 && dfs(v) == false)
return false;
}
c[u] = 1;
topo[n--] = u;//这里的n没有初始化
return true;
}