题解 | #【模板】拓扑排序#

【模板】拓扑排序

https://www.nowcoder.com/practice/88f7e156ca7d43a1a535f619cd3f495c


一看到板子题就是好啊~~~
直接上之前做过的笔记~~~~
接下来就是代码啦,具体还是要自己敲自己学哦!
int n,m;
const int maxn=1e5+100;
int ne[maxn],e[maxn],h[maxn],idx,q[maxn],d[maxn];
void add(int a,int b)
{
    e[idx]=b; ne[idx]=h[a]; h[a]=idx++;
}
bool topsort()
{

    int hh=0,tt=-1;
    for(int i=1;i<=n;i++){
        if(d[i]==0) {
            q[++tt]=i;
        }
    }
    while(hh<=tt)
    {
        auto t=q[hh++];
        for(int i=h[t];i!=-1;i=ne[i])
        {
            int j=e[i];
            d[j]--;
            if(d[j]==0)
            {
                q[++tt]=j;
            }
        }
    }
    return tt==n-1; //所有点的入列了,那么说明它是一个有向无环图,具有拓扑序
}
int main()
{
    memset(h,-1,sizeof h);
    int i,j,a,b;
    cin>>n>>m;
    for(i=0;i<m;i++){
        cin>>a>>b;
        add(a,b);
        d[b]++;
    }
    if(topsort())
    {
        for(i=0;i<n;i++){
            cout<<q[i]<<" ";

        }
        cn;
    }
    else
    {
        cout<<-1<<endl;
    }
    return 0;
}



全部评论
大神,请问maxn为什么取1e5+100呢?题目中的边数是2e5,我不理解你写的是1,但是后面又加100。
点赞 回复 分享
发布于 2022-09-16 15:57 广东

相关推荐

10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
6
3
分享
正在热议
# 25届秋招总结 #
443000次浏览 4514人参与
# 春招别灰心,我们一人来一句鼓励 #
42077次浏览 535人参与
# 阿里云管培生offer #
120347次浏览 2220人参与
# 地方国企笔面经互助 #
7969次浏览 18人参与
# 同bg的你秋招战况如何? #
77008次浏览 566人参与
# 实习必须要去大厂吗? #
55793次浏览 961人参与
# 北方华创开奖 #
107454次浏览 600人参与
# 虾皮求职进展汇总 #
115973次浏览 886人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11650次浏览 289人参与
# 实习,投递多份简历没人回复怎么办 #
2454867次浏览 34858人参与
# 提前批简历挂麻了怎么办 #
149922次浏览 1978人参与
# 在找工作求抱抱 #
906063次浏览 9421人参与
# 如果公司给你放一天假,你会怎么度过? #
4762次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1196011次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157641次浏览 2267人参与
# 双非本科求职如何逆袭 #
662333次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12786次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35884次浏览 384人参与
# 简历中的项目经历要怎么写? #
86934次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20145次浏览 240人参与
# 我的上岸简历长这样 #
452046次浏览 8089人参与
牛客网
牛客企业服务