poj1661 并查集简单运用
来源:互联网 发布:会计核算软件子系统 编辑:程序博客网 时间:2024/05/18 01:01
题目来源:题目
在学习并查集,自己在总结。关于算法的原理推荐这里,讲得很生动形象,很好懂。
这道题就是一个简单应用,就是套模版的。需要记录每个根节点下面元素的数量。可能算法还能更加优化。
#include <iostream>#include <cstdlib>#include <cstdio>#include <map>#include <vector>#include <string>#include <algorithm>#define MAX 30010using namespace std;int rank[MAX];int g[MAX];int find(int x){ if(g[x]==x) return x; else{ g[x]=find(g[x]); //带路径压缩 return g[x]; } }void join(int x,int y){ int xroot = find(x); int yroot = find(y); if (xroot==yroot) return; else{ g[yroot] = xroot; rank[xroot]+=rank[yroot]; }}int main(){ int n,m,i,j,k,first,second; while(scanf("%d%d",&n,&m)){ if(m==0&&n==0) break; if(m==0){ cout<<"1\n"; continue; } for(i=0;i<n;i++){ g[i]=i; rank[i]=1; } for(i=0;i<m;i++){ scanf("%d",&k); scanf("%d",&first); for(j=1;j<k;j++){ scanf("%d",&second); join(first,second); first=second; } } cout<<rank[find(0)]<<endl; } //system("pause"); return 0; }
0 0
- poj1661 并查集简单运用
- HDOJ3635 并查集简单运用
- 并查集:HDU5326-Work(并查集比较简单灵活的运用)
- 并查集的运用
- 简单并查集
- 简单并查集
- 简单并查集
- 简单并查集
- 简单并查集
- 简单并查集
- uva 10129 并查集的运用
- hdu1272(并查集的运用)
- 【算法】并查集的运用
- hdu 1829 带权并查集的运用类似于食物链但是更简单些
- 并查集简单应用
- zoj1789-简单并查集
- zoj2740-简单并查集
- 并查集简单模板
- Settings-battery
- 静态方法和实例方法的区别
- exception in initAndListen: 12596 old lock file, terminating
- iOS开发之数据以及对象归档与解归档
- OpenLayers 3 之 使用地理数据传输格式GeoJSON
- poj1661 并查集简单运用
- 斐波那契数列计算时间复杂度之彻底分析
- IOS8 消息推送
- MyBatis一对多和多对一
- IO复习
- 围巾的纠结(并查集之非完整集合的子集合是否连成圈的问题)
- 欧拉图详解
- [LeetCode] Merge k Sorted List (priority queue, min heap, comparator)
- 理解伪元素:Before和:After