题目链接:点击打开链接
题目大意:略。
解题思路:略。
AC 代码
bool TopSort( LGraph Graph, Vertex TopOrder[] )
{
    PtrToAdjVNode e;
    int top=0, cnt=0, in[Graph->Nv+10];
    for(int i=0;i<Graph->Nv;i++) in[i]=0;
    Vertex *sk;
    sk=(Vertex *)malloc(Graph->Nv*sizeof(Vertex));
    for(int i=0;i<Graph->Nv;i++)
    {
        for(e=Graph->G[i].FirstEdge; e; e=e->Next)
        {
            int k=e->AdjV;
            in[k]++;
        }
    }
    for(int i=0;i<Graph->Nv;i++)
        if(in[i]==0) sk[++top]=i;
    while(top!=0)
    {
        int tp=sk[top--];
        TopOrder[cnt++]=tp;
        for(e=Graph->G[tp].FirstEdge; e; e=e->Next)
        {
            int k=e->AdjV;
            if(!(--in[k]))
                sk[++top]=k;
        }
    }
    if(cnt<Graph->Nv) return 0;
    return 1;
}









