拓扑排序

 1 void toposort(int map[MAX][MAX],int indegree[MAX],int n)
 2 {
 3     int i,j,k;
 4     for(i=0;i<n;i++) //遍历n次
 5     {
 6         for(j=0;j<n;j++) //找出入度为0的节点
 7         {
 8             if(indegree[j]==0)
 9             {
10                 indegree[j]--;
11                 cout<<j<<endl;
12                 for(k=0;k<n;k++) //删除与该节点关联的边
13                 {
14                     if(map[j][k]==1)
15                     {
16                         indegree[k]--;
17                     }
18                 }
19                 break;
20             }
21         }
22     }
23 }
原文地址:https://www.cnblogs.com/hutonm/p/5527362.html