您的位置:首页
并查集hdu1232
2017-04-19 09:27
155 查看
应该是最主要的题
開始还是没有理解透彻
没有理解透彻就不要急着做题
并查集说白了就是把全部的点看看能归成几个集 合
所以首先推断这两点是否在一个集合范围内
假设没在一个集合范围内
就把小的集合赋给大的集合
记住是把小的集合赋给大的集合
把小的集合赋给大的集合
把小的集合赋给大的集合
把小的集合赋给大的集合
3遍
至于为什么
改成大于也对。
。。
開始还是没有理解透彻
没有理解透彻就不要急着做题
并查集说白了就是把全部的点看看能归成几个集 合
所以首先推断这两点是否在一个集合范围内
假设没在一个集合范围内
就把小的集合赋给大的集合
记住是把小的集合赋给大的集合
把小的集合赋给大的集合
把小的集合赋给大的集合
把小的集合赋给大的集合
3遍
至于为什么
改成大于也对。
。。
#include<cstdio> #include<algorithm> using namespace std; int sett[1100]; int find2(int a) { while(sett[a]!=a) a =sett[a]; return a; } void merge2(int a,int b) { if(a<b) sett[a]=b; else sett[b]=a; } int main() { int n,m; while(scanf("%d",&n)&&n!=0) { for(int i=1;i<=n;i++) sett[i]=i; scanf("%d",&m); int x,y; for(int i=0;i<m;i++){ scanf("%d%d",&x,&y); int fx = find2(x); int fy = find2(y); merge2(fx,fy); } int coutt=0; for(int i=1;i<=n;i++) if(sett[i]==i) coutt++; printf("%d\n",coutt-1); } return 0; }
相关文章推荐
- 初识并查集!---- hdu1232 畅通工程
- HDU1232 畅通工程 并查集
- hdu1232(并查集)
- hdu1232 通畅工程讲解(并查集)
- 并查集,HDU1232
- hdu1232(并查集)
- hdu1232 很不错 要看 并查集
- HDU1232 畅通工程 (并查集)
- Hdu1232(并查集)Java题解
- 畅通工程--hdu1232(并查集)
- HDU1232 并查集有趣解说
- hdu1232(基础并查集)
- hdu1232 畅通工程(并查集)
- 并查集-HDU1232
- kruskal_并查集_代码模板_hdu1232
- 畅通工程-并查集-HDU1232
- 【并查集】-HDU1232-畅通工程
- 并查集入门简略笔记 附HDU1232
- 【并查集】畅通工程 _HDU1232
- 【hdu1232】畅通工程【并查集】