原问题的地址: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
<