原问题的地址: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()
{
}
#endifEdge.h
#ifndef EDGE_H
#define EDGE_H
class Edge
{
publi

本文介绍了如何使用Kruskal算法解决最小生成树问题,详细讲解了算法思路,并提供了对应的C++代码实现。
最低0.47元/天 解锁文章
778

被折叠的 条评论
为什么被折叠?



