拓扑排序模板
Posted xiaoguapi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拓扑排序模板相关的知识,希望对你有一定的参考价值。
邻接表使用vector实现
void read()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
cin >> x >> y;
edge[x].push_back(y);
in[y]++;
}
}
void topo_sort()
{
for (int i = 1; i <= n;i++)
if (!in[i]) que.push(i);
while (!que.empty())
{
int v = que.front();
que.pop();
ans.push_back(v);
for (int i = 0; i < edge[v].size(); i++)
{
if (--in[edge[v][i]] == 0)
que.push(edge[v][i]);
}
}
}
使用数组实现邻接表
void add_edge(int from, int to)
{
ver[++tot] = to;
Next[tot] = head[from];
head[from] = tot;
in[to]++;
}
以上是关于拓扑排序模板的主要内容,如果未能解决你的问题,请参考以下文章