ACM算法竞赛——拓扑排序(模板)

2022-05-16 10:08:34 浏览数 (1)

代码语言:txt复制
bool topsort()
{
    int hh = 0, tt = -1;

    // d[i] 存储点i的入度
    for (int i = 1; i <= n; i    )
        if (!d[i])
            q[    tt] = i;

    while (hh <= tt)
    {
        int t = q[hh    ];

        for (int i = h[t]; i != -1; i = ne[i])
        {
            int j = e[i];
            if (-- d[j] == 0)
                q[    tt] = j;
        }
    }

    // 如果所有点都入队了,说明存在拓扑序列;否则不存在拓扑序列。
    return tt == n - 1;
}

0 人点赞