参考博文
拓扑排序
public class Main {
public static void main(String[] args){
System.out.println("请输入一个图的邻接矩阵(8X8):");
int[][] map = new int[8][8];
int[] inDegree = new int[8];
for(int i = 0; i < 8; i++){
inDegree[i] = 0;
}
java.util.Scanner scan = new java.util.Scanner(System.in);
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
map[i][j] = scan.nextInt();
if(map[i][j] == 1){
inDegree[j]++;
}
}
}
String str = "abcdefgh";//使得字母和对应的下标数字对应
//拓扑排序
//每次干掉一个节点,最多干8次,8次干不完,说明有环
for(int i = 0; i < 8; i++){
//找一个入度是0的节点,干掉
for(int j = 0; j < 8; j++){
if(inDegree[j] == 0){
inDegree[j]--;
System.out.print(str.charAt(j)+" ");
//并删除以j为起点的边
for(int k = 0; k < 8; k++){
if(map[j][k] == 1){
inDegree[k]--;
}
}
break;
}
}
}
System.out.println();
}
}