福建省历届夏令营-排序

https://www.luogu.com.cn/problem/P1347

特殊情况很烦。

如果出现条件 \(A<A\),矛盾;然后我们每次加入一条新的边,就重新做拓扑排序,记为函数 topo()

如果 topo()\(=i\),表示总进队次数为 \(i\)

由于要唯一确定,所以如果出现某一个时刻队列长度超过 \(1\),就说明这两个点是平级的关系,就无法确定了,但你不能排除矛盾,所以先做一个标记 \(f=1\)

如果有的点最后入度非零,那么就矛盾了;

否则,如果 \(f=1\),无法确定;否则,返回入队总次数。

当然,开始插入的点入度为 \(0\) 的个数也会影响 \(f\)

注意每次都要备份 \(in\) 数组。

\(O(m(n+m))\)

https://www.luogu.com.cn/record/176703090

posted @ 2024-09-24 15:20  wscqwq  阅读(4)  评论(0编辑  收藏  举报