本文主要是介绍Kruskal算法求解最小生成树(c++实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原问题的地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=38,该问题本质上是求最小生成树的问题,输入输出部分没有严格遵守题目的要求。
TreeSet.h
#ifndef TREESET_H
#define TREESET_H
#include<vector>
#include"Edge.h"
using std::vector;
class TreeSet
{
public:TreeSet();~TreeSet();void AddNode(int n){nodes.push_back(n);}void AddEdge(Edge e){edges.push_back(e);}bool FindNode(int n){for (size_t i = 0; i < nodes.size(); ++i){if (nodes[i] == n)return true;}return false;}void Merge(TreeSet &t){for (size_t i = 0; i < t.nodes.size(); ++i){this->nodes.push_back(t.nodes[i]);}for (size_t i = 0; i < t.edges.size();++i){this->edges.push_back(t.edges[i]);}}
private:vector<int> nodes;vector<Edge> edges;
};TreeSet::TreeSet()
{
}TreeSet::~TreeSet()
{
}
#endif
Edge.h
<
这篇关于Kruskal算法求解最小生成树(c++实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!