并查集的基本操作

来源:互联网 发布:纪念币价格走势软件 编辑:程序博客网 时间:2024/05/18 23:25

#include <iostream>#include <stdio.h>#include <cstring>using namespace std;const int maxNodes = 50001;int realNum=100;int father[maxNodes];int rank[maxNodes];//只有顶点才有这个虚拟的高度int void init(){for (int i=0;i<realNum;++i){father[i] = i;rank[i] = 0;}}int findSet(int x)//返回所在集合的代表元素//压缩路径{if(x!=father[x])father[x] = findSet(father[x]);return father[x];}void merge(int i,int j){int x = findSet(i);int y = findSet(j);if(x != y){if(rank[x]>rank[y])father[y] = x;else{father[x] = y;if (rank[x] == rank[y])++rank[y];}}}bool judge(int x,int y)//判断x,y是否属于同一个集合{if(findSet(x)==findSet(y))return true;return false;}int main(){int K;while (scanf("%d%d",&realNum,&K)!=EOF){}return 0;}

明天写食物链题目的解题报告



原创粉丝点击