【发布时间】:2020-09-18 09:13:45
【问题描述】:
我正在解决 LeetCode.com 上的this 问题。问题中的声明说:
某些课程可能有先决条件,例如要学习课程 0,您必须先学习课程 1,它表示为一对:[0,1]
我的目标是提出一个图形表示。我的问题是,根据上述陈述,我应该从以下位置创建图表:
一个。 0 -> 1;或
湾。 1 -> 0?
我感到困惑的原因是,如果我想出前者,我实际上会做与要求相反的相反 - 我会先访问0,然后再做先决条件1 .另一方面,如果我采用后一种方式,如果有这样一种情况,其中要学习0 课程,我必须学习多个必备课程,比如1 和2?使用后一种表示,我最终会从1 完成课程0(感谢边缘),而无需先完成课程2。
我应该如何创建定向边缘?
【问题讨论】:
-
请注意,我对this one 也有类似的问题。
-
您想要一个边来代表您应该采取的行动,还是您可能采取的行动?也就是说,如果唯一的要求是在 0 之前取 1 和 2,那么你想要像
{1->2, 2->0}这样的图还是像{1->2, 2->1, 1->0, 2->0}这样的图? -
当且仅当图表没有循环时,才有可能完成所有课程。这样看来,边缘指向哪个方向并不重要。
-
@Beta,我真的不知道。唯一的要求是课程
1和2应在课程0之前完成。我们如何对图表进行建模取决于我们。 -
@IgorTandetnik,您能详细说明一下吗?
标签: c++ algorithm graph graph-traversal