关于拓扑排序反向建图的一点思考(未完...

1. 什么类型的题目需要反向建图 ?

    通过做题发现,对于要求编号小的靠前输出这类题需要反向建图(菜鸡做题少...未完待续

2.为什么要反向建图 ?

    上面已经说过什么类型的题目需要反向建图。

    比如说:有1 , 2 , 3 共 3 个数,要求 3 在 1 前面输出(对 2 没有要求

    如果没有反向建图的话,会造成输出 2 3 1这样的错解( 实际上应该输出 3 1 2 ...

3.详细步骤

对于给定顺序:

    6 -> 4 -> 7     ( 对于这一行,要求先输出6,在输出4,最后输出 7

    3 -> 9  ->2      ( 同上。。。

    5  ->1  ->8        (同上。。。

这样我们反向建图,每次都处理(比较)入度为 0 的点

    6 <- 4 <- 7

    3 <- 9 <- 2

    5 <- 1 <- 8

这样我们先比较 7 2 8 这一列( 入度为 0 嘛),大的肯定是最后输出( 要求小的先输出

因此 ans[1] = 8 ,把 8 剔除出去,与 8 相连的点的入度 -1

    6 <- 4 <- 7

    3 <- 9 <- 2

    5 <- 1

此时入度为 0 的点有 7 2 1 ,然后再把 最大的剔除出去

因此 ans[2] = 7,与 7 相连的点的入度 -1

    6 <- 4 

    3 <- 9 <- 2

    5 <- 1

此时入度为 0 的点有 4 2 1 ,然后再把 最大的剔除出去

因此 ans[3] = 4 与 4 相连的点的入度 -1

反复执行上述步骤,直至处理完全部入度为 0 的点( 可能有环。。。)


最后得到 ans[1] = 8 ; ans[2] = 7 ;ans[3] = 4 ; ans[4] = 6 ;ans[5] = 2 ; ans[6] = 9 ;ans[7] = 3 ;ans[8] = 1 ; ans[9] = 5

此时,我们再反向输出,即可以得到答案

5 1 3 9 2 6 4 7 8

4.题目链接

Reward

逃生

5.结束

( 有错误的话还望多多指教 。。。

再补充一点:关于字典序最小  和  编号最小 优先输出的区别!

对比 HDU 1285 和 HDU 4875 

我们发现前一道是要求  字典序最小优先输出 即可 后面一道却是要求 编号最小优先输出!!

那么,有什么区别吗?


对于这张图,字典序最小优先输出是   1 3 4 2

BUT              编号最小优先输出是      1 4 2 3

(已经看晕了QwQ

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值