专栏文章
【模板】拓扑排序
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minis34e
- 此快照首次捕获于
- 2025/12/02 03:05 3 个月前
- 此快照最后确认于
- 2025/12/02 03:05 3 个月前
vector版
CPPvoid topsort(int n,vector<int> *g,int *in,int *ans,bool icd)
{
queue<int,list<int> > q;int len = 0,t;
if (!icd) for (int i = 1;i <= n;i ++) for (auto j:g[i]) in[j] ++;
for (int i = 1;i <= n;i ++) if (!in[i]) q.push(i);
while (!q.empty())
{
t = q.front(),q.pop(),ans[++len] = t;
for (auto i:g[t]) if (--in[i] == 0) q.push(i);
}
}
链式前向星版
前置知识:链式前向星
CPPvoid topsort(int n,LFS g,int *in,int *ans,bool icd)
{
queue<int,list<int> > q;int len = 0,t;
if (!icd) for (int i = 1;i <= n;i ++) for (int j = g.head[i];j;j = g.edge[j].ne) in[g.edge[j].to] ++;
for (int i = 1;i <= n;i ++) if (!in[i]) q.push(i);
while (!q.empty())
{
t = q.front(),q.pop(),ans[++len] = t;
for (int i = g.head[t],v;i;i = g.edge[i].ne) if (--in[v = g.edge[i].to] == 0) q.push(v);
}
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...