Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要一种方法将一组顶点拆分为单独的组件,只使用边列表。
例如,如果程序带有输入
2,3
1,5
3,4
4,2
我需要将 1 和 5 放置在与 2、3、4 不同的结构中,因为它们没有连接。
将所有顶点放入邻接列表中是否是一个好主意,如果是这样,什么将决定它们如何分割?
还要记住,顶点的数量和边的数量都是已知的,但是是可变的。
如果我对你的理解正确,那么你真的可以使用深度优先搜索之类的东西。当你到达某个点时,你用索引 0 标记它(例如)。当您似乎遍历了连接结构中的所有点(您的搜索已完成)时,您开始迭代点数组以查看是否有未标记的点(带有 0),因此开始对其运行深度优先搜索点并用 1 标记所有点...这样您就可以分析点数组并看到其中一些标记为 0,有些是 1,有些标记为 2...所以如果您有 0, 1,2 那么你有 3 个独立的结构。
希望它有用。