拓扑排序
拓扑排序
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/模板/拓扑排序/