拓扑排序(邻接阵)模板
int graph[narray][narray]; //邻接阵
int indegree[narray]; //记录顶点的入度
int n; //n为顶点个数
memset(graph,0,sizeof(graph));
memset(indegree,0,sizeof(indegree));
for(i=1;i<=n;++i) //遍历n次每次找出一个顶点
{
for(j=1;j<=n;++j) //遍历所有的结点
{
if(indegree[j]==0)
{
indegree[j]--; //该顶点的入度为-1,防止该顶点被在此遍历到
if(i!=n) printf("%d ",j);
else printf("%d\n",j);
for(k=1;k<=n;++k)
{
if(graph[j][k])
indegree[k]--; //与该顶点关联的顶点的入度递减
}
break;
}
}
}