#include <iostream>
#include <map>
#include <vector>
std::map<int,int> mergeSearch;
std::multimap<int,int> graph;
void init()// 测试数据
{
graph.insert(std::pair<int,int> (1,2));
graph.insert(std::pair<int,int> (2,3));
graph.insert(std::pair<int,int> (5,6));
graph.insert(std::pair<int,int> (4,7));
}
int cnt(0);
void mark()
{
for(auto a:graph)//三种情况 节点两个都不存在,第一个存在和第二个存在
{
if(mergeSearch[a.first] == 0 && mergeSearch[a.second] == 0)
{
mergeSearch[a.first] = ++cnt;
mergeSearch[a.second] = cnt;
}
else if(mergeSearch[a.first] == 0 && mergeSearch[a.second])
mergeSearch[a.first] = mergeSearch[a.second];
else
mergeSearch[a.second] = mergeSearch[a.first];
}
}
int main()
{
init();
mark();
for(auto x:mergeSearch)
{
std::cout<<"节点"<<x.first<<":"<<x.second<<std::endl;
}
}
c++并查集实现
最新推荐文章于 2024-09-12 22:06:47 发布