C++ 这是Kruskal'的正确实现吗;s算法?

C++ 这是Kruskal'的正确实现吗;s算法?,c++,algorithm,kruskals-algorithm,C++,Algorithm,Kruskals Algorithm,我编写了以下代码来解决UVA在线判断问题#10034: //问题10034 #包括 #包括 #包括 然而,当我把它提交给UVA时,我得到了一个错误的答案信息。我对Krukal算法的实现正确吗?我做错了什么?首先,为什么不使用a而不是对指针结构进行复杂的操作 其次,这个问题似乎有一个恶作剧。你不仅仅需要最小生成树。考虑案件 4 0.0 0.0 1.0 0.0 1.0 1.0 0.0 1.0 我只需要2平方英尺(2)单位的墨水来连接所有的点;我用两行长度sqrt(2)做一个X。但是,最小生成树的长

我编写了以下代码来解决UVA在线判断问题#10034:

//问题10034
#包括
#包括
#包括


然而,当我把它提交给UVA时,我得到了一个错误的答案信息。我对Krukal算法的实现正确吗?我做错了什么?

首先,为什么不使用a而不是对指针结构进行复杂的操作

其次,这个问题似乎有一个恶作剧。你不仅仅需要最小生成树。考虑案件

4
0.0 0.0
1.0 0.0
1.0 1.0
0.0 1.0

我只需要2平方英尺(2)单位的墨水来连接所有的点;我用两行长度sqrt(2)做一个X。但是,最小生成树的长度为3。

您的算法正确吗?这是很多代码供一般回答者浏览。尝试制作一些测试用例,并向我们展示输出!也许你可以自己调试一下,给我们一个大致的区域看看。对于您的代码,以及每个部分的工作方式,我也非常感谢。啊,对不起,我误读了您的输入。不过,我不确定您的2*sqrt(2)解决方案是否适用于此。在我看来,在这个问题中,当线路相交时,不允许您切换线路,因此您的“X”解决方案是不够的。这个问题的MST解决方案(如果他用所有对之间的边初始化图)实际上是2*sqrt(2)+1,根据我的解释,这是正确的。在那个例子中,MST的长度是3。我没有在你的代码中看到明显的错误,但是你使用了一个复杂的指针网络,这让你的代码变得更加困难。不过,我不确定您的2*sqrt(2)解决方案是否正确。贴出的原始问题是:“当Richie完成后,从任何雀斑到任何其他雀斑都必须有一系列连接线。”X真的足够了吗?要从左上角点到右上角点,你必须在交叉点改变方向,我不认为这是允许的。还有,我不是OP
4
0.0 0.0
1.0 0.0
1.0 1.0
0.0 1.0