拓扑排序

拓扑排序

auto TopoSort = [&](auto &self) -> vector<int>
{
    vector<int> arr;
    vector<bool> vis(n + 1, false);
    priority_queue<int> q;
    for (int i=1;i<=n;i++)
        if (!in[i])	q.push(i);

    while (!q.empty())
    {
        auto x = q.top();   q.pop();
        vis[x] = true;
        arr.push_back(x);

        for (auto to : adj[x])
        {
            in[to] --;
            if (!in[to] && !vis[to])
                q.push(to);
        }
    }
    return arr;
};

拓扑排序
http://linyisu.github.io/2025/01/16/模板/拓扑排序/
作者
linyisu
发布于
2025年1月16日
许可协议