擒贼先擒王

并查集
并查集算法:并查集通过一个一维数组来实现,其本质是维护一个森林。
刚开始的时候,森林的每个点都是孤立的,也可以理解为每个点就是一棵只有一个点的树,之后
通过一些条件,逐渐将这些树合并成一棵大树。
题意:
快过年了,犯罪分子也开始为年终奖奋斗了。晓哼的家乡出现了多次抢劫事件。由于强盗人数过于庞大,作案频繁,警方想查清楚到底有几个犯罪团伙实在太不容易了,不过警察叔叔还是搜集到了一些线索,需要咱们帮忙分析一下:
现在有10个强盗。
1号强盗与2号强盗是同伙。
3号强盗与4号强盗是同伙。
5号强盗与2号强盗是同伙。
4号强盗与6号强盗是同伙。
2号强盗与6号强盗是同伙。
8号强盗与7号强盗是同伙。
9号强盗与7号强盗是同伙。
1号强盗与6号强盗是同伙。
2号强盗与4号强盗是同伙。
有一点需要注意,强盗同伙的同伙也是同伙。你能帮助警方查出有多少个独立的犯罪团伙吗?
输入数据:
第一行n m,n表示强盗的人数,m表示警方搜集到的m条线索。接下来的m行每一行有两个数 a b。
表示强盗a和强盗b是同伙。

input
10 9
1 2
3 4
5 2
4 6
2 6
8 7
9 7
1 6
2 4
output
3
代码实现

#include<stdio.h>
int f[1010],n,m,sum=0;
int getf(int v)   //找祖宗
{if(f[v]==v)   //说明他就是这一脉的头头return v;else{f[v]=getf(f[v]);//向上找return f[v];}
}
void merge(int v,int u)
{int t1,t2;t1=getf(v);     //每次直接让祖先来谈t2=getf(u);if(t1!=t2)f[t2]=t1;//如果两个结点是否是同一个祖先return;
}
int main()
{int i,x,y;scanf("%d%d",&n,&m);for(i=1;i<=n;i++)f[i]=i;       //初始化for(i=1;i<=m;i++){scanf("%d%d",&x,&y);merge(x,y);}for(i=1;i<=n;i++)if(f[i]==i)sum++;  //找出来祖先数就是强盗团伙数printf("%d\n",sum);return 0;
}

擒贼先擒王(并查集)相关推荐

  1. 擒贼先擒王——并查集

    写一篇并查集的总文,详细介绍什么是并查集?思想是怎样的?怎么写出代码?如何对应题目? 1.什么是并查集 并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题.它管理一系 ...

  2. 堆的应用--并查集解决“擒贼先擒王”问题(JAVA)

    现在有10个强盗. 1号强盗与2号强盗是同伙. 3号强盗与4号强盗是同伙. 5号强盗与2号强盗是同伙. 4号强盗与6号强盗是同伙. 2号强盗与6号强盗是同伙. 8号强盗与7号强盗是同伙. 9号强盗与7 ...

  3. 【坐在马桶上看算法】啊哈算法13:零基础彻底弄懂“并查集“

    并查集 题目描述 分析 并查集模板 因为最近在学并查集,在别的博客看到关于并查集的知识点,讲解得很清晰,理解更深,所以搬运到csdn来分享一下好资源. 题目描述 快过年了,犯罪分子们也开始为年终奖&q ...

  4. 图论:并查集求最小环

    图论:并查集求最小环 概念: 图.路.环: 一个有向图由G=(N,A)表示,其中N表示节点集,A表示边集边(i,j)为一有序对,i为出发节点,j为终止节点.在无向图中(i,j)与(j,i)一致. 路是 ...

  5. 并查集—解密犯罪团伙

    警察想查清楚有几个犯罪团伙,搜集到了一些线索: 现在有10个强盗: 1号强盗与2号强盗是同伙: 3号强盗与4号强盗是同伙: 5号强盗与2号强盗是同伙: 4号强盗与6号强盗是同伙: 2号强盗与6号强盗是 ...

  6. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  7. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  8. HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法

    tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...

  9. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

最新文章

  1. React之props的简写方式和报错示范
  2. 区块链入局,51小长假听歌、打游戏的姿势将被颠覆!
  3. 安卓第六夜 凡高的自画像
  4. 7,复习,多对多表的三种创建,form组件,cookie,session
  5. 堆排序(php实现)
  6. Himall商城ObjectHelper帮助类(1)
  7. Java餐厅点餐系统【附源码报告】
  8. VirtualLab初学者教程-2.搭建一个光学系统
  9. 用Python爬取网易云音乐全部歌手信息(歌手id和歌手名字)
  10. 一个完整的python项目_一个完整的机器学习项目在Python中的演练(一)
  11. 经济学人精读笔记10:员工休假居然对企业有好处?
  12. AI玩Flappy Bird│基于DQN的机器学习实例【完结】
  13. 非主流闪图头像教程:扩散粒子效果
  14. 新的摩尔多瓦投资公民身份计划开放申请
  15. log4j2:占位符引起的内存泄漏bug
  16. 开机后让妲己给你加油打气
  17. 操作系统学习笔记:保护
  18. 【性能优化】MySQL性能优化之存储引擎调优
  19. vue获取服务器路径图片显示,vue img图片路径和背景图片路径打包问题
  20. Node.js教程15:net模块初探

热门文章

  1. 斗鱼 html播放器,斗鱼直播平台简易播放器 v1.2 (20180223更新)
  2. 商汤被曝完成15亿美元新融资,去年营收7.2亿美元,最新估值85亿美元
  3. 遍历 HashMap 的 5 种方式总结
  4. openGL API 之glProgramUniform4fv()
  5. H3C华三S7506E系列交换机万兆IRF堆叠虚拟化
  6. SylixOS下 i.MX RT1050的GPIO驱动实例
  7. 谈谈自己考研复习的计划
  8. bzoj 2560 串珠子
  9. 县城及三四线城市做小程序代理加盟前景分析
  10. linux_进程类相关学习-fork函数-getpid函数-getppid函数-getuid函数-geteuid函数-getgid函数-getegid函数-进程之间共享数据-进程gdb调试