基本算法:
每一步 总输出当前无前驱(入度=0)的顶点.
1.从有向图中选择一个没有前驱(入度=0,起始点)的顶点并输出
2.从网中删除这个点,并删除从这个顶点出发的所有有向边.
3.重复上述步骤,直到网中不再存在没有前驱的顶点
int queue[maxn];
int iq=0;
for(i=0;i<=n;i++)
{
if(indegree[i]==0)
{
queue[iq++]=i;
}
}
for(i=0;i<iq;i++)
{
for(k=head[queue[i]];k!=-1;k=edge[k].next)
{
indegree[edge[k].to]--;
if(indegree[edge[k].to]==0)
{
queue[iq++]=edge[k].to;
}
}
}
for(i=0;i<i1;i++)
{
cout<<queue[i]<<" ";
}
cout<<endl;

1160

被折叠的 条评论
为什么被折叠?



